MariaDB
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> MariaDB

Cách tạo số nguyên ngẫu nhiên trong phạm vi trong MariaDB

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 | + ------- + ------- + ------- + ------- + ------- + ------- + ------- + ------- + 

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Chạy ProxySQL dưới dạng Dịch vụ Kubernetes

  2. Cách UTC_TIME () hoạt động trong MariaDB

  3. Giải thích các đơn vị ngày và giờ tổng hợp MariaDB

  4. Xử lý các giao dịch lớn với tính năng sao chép trực tuyến và MariaDB 10.4

  5. Cơ sở dữ liệu điểm chuẩn 101 - phần 1