MySQL में निर्दिष्ट रेंज (न्यूनतम से अधिकतम) के बीच रैंडम इंटीजर जनरेट करना
MySQL में RAND() फंक्शन 0 से 1 के बीच फ्लोटिंग-पॉइंट संख्या देता है। इसे मनचाही रेंज में बदलने के लिए गणितीय फॉर्मूला उपयोग करें।
सिंटैक्स:
SELECT FLOOR(RAND() * (maximumValue - minimumValue) + minimumValue) AS anyVariableName;
फॉर्मूला समझाया:
RAND()→ 0.0 से 1.0 के बीच रैंडम दशमलव(max - min)→ रेंज का आकारRAND() * range→ 0 से range के बीच रैंडम+ min→ रेंज को min से शुरू करने के लिए शिफ्टFLOOR()→ दशमलव हटाकर इंटीजर बनाता है
व्यावहारिक उदाहरण: 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)
उन्नत उपयोग:
एक क्वेरी में कई रैंडम मान:
SELECT
FLOOR(RAND() * 100) + 1 AS num1,
FLOOR(RAND() * 100) + 1 AS num2,
FLOOR(RAND() * 100) + 1 AS num3;
टेबल से रैंडम रो चुनें:
SELECT * FROM your_table ORDER BY RAND() LIMIT 1;
रिप्रोड्यूसिबल रैंडमनेस (सीड के साथ):
SELECT FLOOR(RAND(42) * 100) + 1; -- हमेशा समान परिणाम देगा
प्रदर्शन नोट:
ORDER BY RAND()बड़ी टेबल पर धीमा होता है (फुल टेबल स्कैन + सॉर्ट)- बड़ी टेबल के लिए:
WHERE id >= (SELECT FLOOR(RAND() * (SELECT MAX(id) FROM table)))बेहतर है