MariaDB bao gồm một RAND()
hàm trả về một số ngẫu nhiên. Chính xác hơn, nó trả về một DOUBLE
giá trị dấu phẩy động chính xác v
trong phạm vi 0 <= v < 1.0
.
Điều này thật tuyệt, nhưng nếu bạn muốn tạo một số nguyên trong một phạm vi lớn hơn - và một phạm vi mà bạn chỉ định?
May mắn thay, có một kỹ thuật dễ dàng để thực hiện điều này.
Kỹ thuật
Chìa khóa trả về một số nguyên ngẫu nhiên trong một phạm vi cụ thể là theo cú pháp sau:
FLOOR(min_value + RAND() * (max_value - min_value +1))
Điều này sử dụng FLOOR()
hàm để trả về giá trị số nguyên lớn nhất không lớn hơn đối số của nó. Xem như RAND()
của chúng tôi hàm là một phần của đối số, tất cả những gì chúng ta cần làm là áp dụng thêm một vài phép tính để chỉ định các giá trị ngẫu nhiên tối thiểu và tối đa được yêu cầu của chúng ta.
Tạo số nguyên ngẫu nhiên từ 1 đến 10
Vì vậy, bằng cách sử dụng cú pháp trên, đây là một ví dụ về việc tạo một số nguyên ngẫu nhiên từ 1 đến 10:
SELECT FLOOR(1 + RAND() * (10 - 1 +1));
Kết quả:
+ --------------------------------- + | TẦNG (1 + RAND () * (10 - 1 +1)) | + -------------------------------- - + | 7 | + --------------------------------- +
Hãy gọi nó là một số khác để xem hiệu ứng ngẫu nhiên:
SELECT
FLOOR(1 + RAND() * (10 - 1 +1)) AS r1,
FLOOR(1 + RAND() * (10 - 1 +1)) AS r2,
FLOOR(1 + RAND() * (10 - 1 +1)) AS r3,
FLOOR(1 + RAND() * (10 - 1 +1)) AS r4,
FLOOR(1 + RAND() * (10 - 1 +1)) AS r5,
FLOOR(1 + RAND() * (10 - 1 +1)) AS r6,
FLOOR(1 + RAND() * (10 - 1 +1)) AS r7,
FLOOR(1 + RAND() * (10 - 1 +1)) AS r8;
Kết quả:
+ ---- + ---- + ---- + ---- + ---- + ---- + ---- + ---- + | r1 | r2 | r3 | r4 | r5 | r6 | r7 | r8 | + ---- + ---- + ---- + ---- + ---- + ---- + ---- + ---- + | 3 | 6 | 10 | 4 | 6 | 10 | 1 | 6 | + ---- + ---- + ---- + ---- + ---- + ---- + ---- + ---- +
Tạo số nguyên ngẫu nhiên từ 1 đến 100
Để tạo một số ngẫu nhiên từ 1 đến 100, tất cả những gì chúng ta cần làm là thay 10 bằng 100:
SELECT FLOOR(1 + RAND() * (100 - 1 +1));
Kết quả:
+ ---------------------------------- + | TẦNG (1 + RAND () * (100 - 1 +1)) | + -------------------------------- - + | 87 | + ---------------------------------- +
Hãy gọi nó là một số khác để xem hiệu ứng ngẫu nhiên:
SELECT
FLOOR(1 + RAND() * (100 - 1 +1)) AS r1,
FLOOR(1 + RAND() * (100 - 1 +1)) AS r2,
FLOOR(1 + RAND() * (100 - 1 +1)) AS r3,
FLOOR(1 + RAND() * (100 - 1 +1)) AS r4,
FLOOR(1 + RAND() * (100 - 1 +1)) AS r5,
FLOOR(1 + RAND() * (100 - 1 +1)) AS r6,
FLOOR(1 + RAND() * (100 - 1 +1)) AS r7,
FLOOR(1 + RAND() * (100 - 1 +1)) AS r8;
Kết quả:
+ ---- + ---- + ---- + ---- + ---- + ---- + ---- + ---- + | r1 | r2 | r3 | r4 | r5 | r6 | r7 | r8 | + ---- + ---- + ---- + ---- + ---- + ---- + ---- + ---- + | 61 | 45 | 41 | 68 | 19 | 92 | 99 | 18 | + ---- + ---- + ---- + ---- + ---- + ---- + ---- + ---- +
Tạo số nguyên ngẫu nhiên từ 10000 đến 50000
Hãy làm một việc nữa, lần này tạo một số ngẫu nhiên từ 10000 đến 50000:
SELECT FLOOR(10000 + RAND() * (50000 - 10000 +1));
Kết quả:
+ -------------------------------------------- + | TẦNG (10000 + RAND () * (50000 - 10000 +1)) | + -------------------------------- ------------ + | 46884 | + -------------------------------------------- +Và một số lệnh gọi khác để xem hiệu ứng ngẫu nhiên:
SELECT FLOOR(10000 + RAND() * (50000 - 10000 +1)) AS r1, FLOOR(10000 + RAND() * (50000 - 10000 +1)) AS r2, FLOOR(10000 + RAND() * (50000 - 10000 +1)) AS r3, FLOOR(10000 + RAND() * (50000 - 10000 +1)) AS r4, FLOOR(10000 + RAND() * (50000 - 10000 +1)) AS r5, FLOOR(10000 + RAND() * (50000 - 10000 +1)) AS r6, FLOOR(10000 + RAND() * (50000 - 10000 +1)) AS r7, FLOOR(10000 + RAND() * (50000 - 10000 +1)) AS r8;
Kết quả:
+ ------- + ------- + ------- + ------- + ------- + ------ - + ------- + ------- + | r1 | r2 | r3 | r4 | r5 | r6 | r7 | r8 | + ------- + ------- + ------- + ------- + ------- + ------- + ------- + ------- + | 13688 | 37790 | Năm 17884 | 46052 | 46608 | 44880 | 34578 | 28249 | + ------- + ------- + ------- + ------- + ------- + ------- + ------- + ------- +