การใช้ RAND() และ FLOOR() สำหรับสุ่มตัวเลข
MySQL มีฟังก์ชัน RAND() สำหรับสุ่มเลขทศนิยม 0-1 ร่วมกับ FLOOR() เพื่อปัดเศษเป็นจำนวนเต็ม
รูปแบบคำสั่ง
SELECT FLOOR(RAND() * (maximumValue - minimumValue) + minimumValue) AS anyVariableName;
ตัวอย่างสุ่มตัวเลขระหว่าง 100 ถึง 200
mysql> SELECT FLOOR(RAND() * (200 - 100) + 100) AS RandomValue;
+-------------+ | RandomValue | +-------------+ | 144 | +-------------+ 1 row in set (0.00 sec)
รันซ้ำจะได้ค่าต่างกัน
mysql> SELECT FLOOR(RAND() * (200 - 100) + 100) AS RandomValue;
+-------------+ | RandomValue | +-------------+ | 184 | +-------------+ 1 row in set (0.00 sec)
อธิบายสูตร:
RAND()สุ่มค่า 0.0000... ถึง 0.9999...(max - min)= ช่วงของตัวเลข (200-100=100)RAND() * 100= ค่า 0 ถึง 99.99...+ minimumValue= เลื่อนช่วงเป็น 100 ถึง 199.99...FLOOR()= ปัดเศษลงเป็นจำนวนเต็ม (100-199)
หมายเหตุ: สูตรนี้รวมค่า minimum และ maximum ไว้ด้วย (inclusive)