MariaDB
 sql >> Teknologi Basis Data >  >> RDS >> MariaDB

Cara Menghasilkan Integer Acak Dalam Rentang di MariaDB

MariaDB menyertakan RAND() fungsi yang mengembalikan angka acak. Lebih tepatnya, ia mengembalikan DOUBLE nilai floating point presisi v dalam rentang 0 <= v < 1.0 .

Ini bagus, tetapi bagaimana jika Anda ingin menghasilkan bilangan bulat dalam rentang yang lebih besar – dan rentang yang Anda tentukan?

Untungnya, ada teknik mudah untuk melakukan ini.

Teknik

Kunci untuk mengembalikan bilangan bulat acak dalam rentang tertentu ada dalam sintaks berikut:

FLOOR(min_value + RAND() * (max_value - min_value +1)) 

Ini menggunakan FLOOR() fungsi untuk mengembalikan nilai integer terbesar tidak lebih besar dari argumennya. Melihat sebagai RAND() our kami fungsi adalah bagian dari argumen, yang perlu kita lakukan hanyalah menerapkan beberapa perhitungan lagi untuk menentukan nilai acak minimum dan maksimum yang diperlukan.

Hasilkan Integer Acak Antara 1 dan 10

Jadi, dengan menggunakan sintaks di atas, berikut adalah contoh menghasilkan bilangan bulat acak antara 1 dan 10:

SELECT FLOOR(1 + RAND() * (10 - 1 +1)); 

Hasil:

+----------------------------------+| LANTAI(1 + RAND() * (10 - 1 +1)) |+-------------------------------- -+| 7 |+---------------------------------+

Mari kita sebut lagi untuk melihat efek acak:

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; 

Hasil:

+----+----+----+----+----+----+----+-----+| r1 | r2 | r3 | r4 | r5 | r6 | r7 | r8 |+----+----+----+----+----+----+----+----+| 3 | 6 | 10 | 4 | 6 | 10 | 1 | 6 |+----+----+----+----+----+----+----+----+

Hasilkan Integer Acak Antara 1 dan 100

Untuk menghasilkan angka acak antara 1 dan 100, yang perlu kita lakukan hanyalah mengganti 10 dengan 100:

SELECT FLOOR(1 + RAND() * (100 - 1 +1)); 

Hasil:

+----------------------------------+| LANTAI(1 + RAND() * (100 - 1 +1)) |+-------------------------------- --+| 87 |+-----------------------------------+

Mari kita sebut lagi untuk melihat efek acak:

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; 

Hasil:

+----+----+----+----+----+----+----+-----+| r1 | r2 | r3 | r4 | r5 | r6 | r7 | r8 |+----+----+----+----+----+----+----+----+| 61 | 45 | 41 | 68 | 19 | 92 | 99 | 18 |+----+----+----+----+----+----+----+----+

Hasilkan Integer Acak Antara 10.000 dan 50000

Mari kita lakukan satu lagi, kali ini menghasilkan angka acak antara 10.000 dan 50000:

SELECT FLOOR(10000 + RAND() * (50000 - 10000 +1)); 

Hasil:

+--------------------------------------------+| LANTAI(10000 + RAND() * (50000 - 10000 +1)) |+-------------------------------- ------------+| 46884 |+----------------------------------------+ 

Dan beberapa panggilan lagi untuk melihat efek acak:

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; 

Hasil:

+-------+-------+-------+-------+-------+------ -+-------+-------+| r1 | r2 | r3 | r4 | r5 | r6 | r7 | r8 |+-------+-------+-------+-------+-------+------- +-------+-------+| 13688 | 37790 | 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. Panduan untuk Penerapan Cloud Database Otomatis

  2. Migrasi dari Oracle Database ke MariaDB - Yang Harus Anda Ketahui

  3. Perbaiki "ERROR 1250 (42000):Tabel '...' dari salah satu SELECT tidak dapat digunakan dalam klausa ORDER" di MariaDB

  4. Kinerja Driver Konektor Java MariaDB

  5. Cara Mengenkripsi Cadangan MySQL &MariaDB Anda