PostgreSQL में, random()
फ़ंक्शन 0.0 <=x <1.0 की श्रेणी में एक छद्म-यादृच्छिक मान देता है।
यह एक साधारण रैखिक सर्वांगसम एल्गोरिथ्म का उपयोग करता है, जो सबसे पुराने और सबसे प्रसिद्ध छद्म यादृच्छिक संख्या जनरेटर एल्गोरिदम में से एक है।
एक छद्म यादृच्छिक संख्या एक संख्या है जो यादृच्छिक प्रतीत होती है, लेकिन वास्तव में यादृच्छिक नहीं है। एक छद्म यादृच्छिक संख्या वास्तव में यादृच्छिक नहीं है क्योंकि इसका मूल्य ज्ञात बीज द्वारा उत्पन्न किया गया था। हालांकि, यह यादृच्छिक प्रतीत होगा यदि उपयोगकर्ता को उस बीज या एल्गोरिथम का कोई ज्ञान नहीं है जिसने इसे बनाया है।
इसलिए, छद्म यादृच्छिक संख्याओं को अक्सर कई अनुप्रयोगों के लिए काफी अच्छा माना जाता है।
उदाहरण
यहां random()
. के साथ छद्म-यादृच्छिक संख्या उत्पन्न करने का एक उदाहरण दिया गया है समारोह।
SELECT random();
परिणाम:
0.625357600199532
हर बार जब आप इसे कॉल करेंगे तो परिणाम स्पष्ट रूप से अलग होगा।
यहां एक और उदाहरण दिया गया है जहां मैं एक ही कथन में तीन बार फ़ंक्शन को कॉल करता हूं।
SELECT
random(),
random(),
random();
परिणाम:
random | random | random -------------------+---------------------+-------------------- 0.594431747016209 | 0.22816249693650903 | 0.7168820259873314
1 और 10 के बीच यादृच्छिक संख्या
यहां 0 और 10 के बीच एक धनात्मक संख्या उत्पन्न करने का एक उदाहरण दिया गया है।
SELECT random() * 10 + 1;
परिणाम:
4.564859004063727
स्पष्ट होने के लिए, यह एक यादृच्छिक संख्या उत्पन्न करता है जो है>=1 और <10.
यादृच्छिक पूर्णांक
आप trunc()
. जैसे फ़ंक्शन का उपयोग कर सकते हैं या floor()
यादृच्छिक संख्या को पूर्णांक के रूप में वापस करने के लिए।
SELECT
trunc(random() * 10 + 1),
floor(random() * 10 + 1);
परिणाम:
trunc | floor -------+------- 1 | 8
यादृच्छिक पंक्तियां लौटाएं
आप random()
का उपयोग कर सकते हैं ORDER BY
. में यादृच्छिक पंक्तियों को वापस करने के लिए डेटाबेस क्वेरी का खंड।
यहां एक उदाहरण दिया गया है जो पगिला . से पूछताछ करता है नमूना डेटाबेस।
SELECT
film_id,
title
FROM film
ORDER BY random() LIMIT 5;
परिणाम:
film_id | title ---------+--------------------- 116 | CANDIDATE PERDITION 806 | SLEEPY JAPANESE 892 | TITANIC BOONDOCK 826 | SPEED SUIT 612 | MUSSOLINI SPOILERS
और अगर मैं इसे फिर से चलाता हूं तो मुझे यह मिलता है:
film_id | title ---------+-------------------- 450 | IDOLS SNATCHERS 827 | SPICE SORORITY 593 | MONTEREY LABYRINTH 529 | LONELY ELEPHANT 591 | MONSOON CAUSE
यदि आपके पास एक बड़ी तालिका है, और आपको सभी पंक्तियों (या बहुत सी पंक्तियों) को वापस करने की आवश्यकता है, तो आप अपनी क्वेरी को कुछ इस तरह संशोधित करना चाहेंगे:
SELECT *
FROM film
WHERE film_id IN
(SELECT film_id FROM film ORDER BY random() LIMIT 5);
दोहराने योग्य यादृच्छिक संख्याएं बनाएं
Postgres में एक setseed()
भी होता है फ़ंक्शन जो आपको बाद के random()
. के लिए एक बीज सेट करने की अनुमति देता है उसी सत्र में कॉल करें।
आप setseed()
. का उपयोग कर सकते हैं दोहराने योग्य random()
. उत्पन्न करने के लिए कॉल।
उदाहरण के लिए देखें कि कैसे सेटसीड () पोस्टग्रेज में काम करता है।