छद्म यादृच्छिक क्या है?

छद्म यादृच्छिक संख्याएं कंप्यूटर द्वारा उत्पन्न होती हैं। वे वास्तव में यादृच्छिक नहीं हैं, क्योंकि जब कंप्यूटर सही ढंग से काम कर रहा है, तो यह कुछ भी नहीं करता है यादृच्छिक। कंप्यूटर नियतात्मक उपकरण हैं - एक कंप्यूटर का व्यवहार डिजाइन द्वारा पूरी तरह से अनुमानित है। इसलिए कुछ अप्रत्याशित बनाने के लिए, कंप्यूटर संख्याओं का उत्पादन करने के लिए गणितीय एल्गोरिदम का उपयोग करते हैं जो "यादृच्छिक रूप से पर्याप्त" हैं।

छद्म-यादृच्छिक संख्या कई कंप्यूटर अनुप्रयोगों के लिए आवश्यक हैं, जैसे कि खेल और सुरक्षा। खेलों में, यादृच्छिक संख्या अप्रत्याशित तत्वों को प्रदान करती है जो खिलाड़ी प्रतिक्रिया दे सकता है, जैसे कि एक यादृच्छिक बुलेट को चकमा देना या डेक के ऊपर से कार्ड खींचना।

कंप्यूटर सुरक्षा में, छद्म यादृच्छिकता एन्क्रिप्शन एल्गोरिदम में महत्वपूर्ण है, जो ऐसे कोड बनाते हैं जिनका अनुमान या अनुमान नहीं लगाया जाना चाहिए।

PRNG क्या है?

एक छद्म यादृच्छिक संख्या जनरेटर, या PRNG, कोई भी प्रोग्राम या फ़ंक्शन है, जो यादृच्छिकता का अनुकरण करने के लिए गणित का उपयोग करता है। इसे DRNG (डिजिटल रैंडम नंबर जनरेटर), या DRBG (निर्धारक यादृच्छिक बिट जनरेटर) भी कहा जा सकता है।

गणित कभी-कभी जटिल हो सकता है, लेकिन सामान्य तौर पर, PRNG का उपयोग करने के लिए केवल दो चरणों की आवश्यकता होती है:

  1. PRNG को एक मनमाना बीज प्रदान करें।
  2. अगले यादृच्छिक संख्या के लिए पूछें।

बीज संख्या यादृच्छिक संख्या बनाने के लिए एक "प्रारंभिक बिंदु" है। संख्याओं की गणना करते समय मान का उपयोग किया जाता है। यदि बीज का मूल्य बदलता है, तो उत्पन्न संख्याएं भी बदल जाती हैं, और एक एकल बीज मूल्य हमेशा समान संख्याओं का उत्पादन करेगा। इस कारण से, संख्या वास्तव में यादृच्छिक नहीं हैं, क्योंकि सच्ची यादृच्छिकता कभी भी दोबारा नहीं बनाई जा सकती है।

वर्तमान समय का उपयोग अक्सर एक अद्वितीय बीज मूल्य के रूप में किया जाता है। उदाहरण के लिए, यदि यह 5 मार्च 2018, शाम 5:03 बजे और 7.01324 सेकंड UTC है, तो इसे पूर्णांक के रूप में व्यक्त किया जा सकता है। वह सटीक समय फिर कभी नहीं होगा, इसलिए उस बीज के साथ एक PRNG यादृच्छिक संख्याओं का एक अनूठा सेट का उत्पादन करना चाहिए।

नोट: बेतरतीब ढंग से उत्पन्न अनुक्रम को पुन: पेश करने में सक्षम होना उपयोगी हो सकता है। शैक्षणिक अनुप्रयोगों में, सिमुलेशन के लिए यादृच्छिक मूल्यों का एक विशाल अनुक्रम उत्पन्न किया जा सकता है, फिर बाद में अधिक विस्तृत विश्लेषण के लिए बिल्कुल पुन: पेश किया जाता है। एक अन्य उदाहरण के रूप में, कंप्यूटर गेम में, यदि कोई खिलाड़ी सहेजे गए गेम को लोड करता है, तो कोई भी "रैंडम" ईवेंट उसी तरह हो सकता है जैसे कि गेम कभी बंद नहीं हुआ। इस तरह, खिलाड़ी बेहतर भाग्य के लिए प्रयास करने के लिए एक ही खेल को बार-बार लोड नहीं कर सकता है।

छद्म यादृच्छिक संख्या कैसे उत्पन्न करें

निम्नलिखित कुछ तरीके हैं जिनसे आप सामान्य कार्यक्रमों और प्रोग्रामिंग भाषाओं में एक छद्म यादृच्छिक संख्या बना सकते हैं।

विंडोज कमांड प्रॉम्प्ट

Windows कमांड प्रॉम्प्ट पर, या एक बैच फ़ाइल में, विशेष पर्यावरण चर % RANDOM% 0 और 32767 के बीच एक छद्म यादृच्छिक संख्या उत्पन्न करता है, जिस समय कमांड प्रॉम्प्ट लॉन्च किया गया था।

 गूंज "तो% रंडम%!" 
 "तो 27525!" 

एक बैच फ़ाइल बनाने के लिए जो 1 और 100 के बीच एक यादृच्छिक संख्या उत्पन्न करती है:

 copy con sorandom.bat echo off set / a myrand =% RANDOM% * 100/32768 + 1 गूंज जिस संख्या के बारे में मैं सोच रहा था वह% myrand% थी। क्या आपको यह सही लगा? 

बैच फ़ाइल को सहेजने के लिए Ctrl + Z और एंटर दबाएं । फिर, फ़ाइल निष्पादित करें:

 इसलिए यादृच्छिक 
 जिस संख्या के बारे में मैं सोच रहा था वह 91 थी। क्या आपने इसे सही पाया? 

विंडोज पॉवरशेल

गेट-रैंडम cmdlet 0 और 2, 147, 483, 647 (अहस्ताक्षरित 32-बिट पूर्णांक का अधिकतम मूल्य) के बीच एक यादृच्छिक संख्या उत्पन्न करता है।

 Get-रैंडम 
 1333190525 

Cmdlet कई विकल्प लेता है, जैसे कि न्यूनतम और अधिकतम मूल्य। मान नीचे दिए गए हैं, इसलिए 1 और 100 के बीच की संख्या उत्पन्न करने के लिए, अधिकतम 101 पर सेट करें:

 Get-random -Minimum 1 -Maximum 101 
 99 

माइक्रोसॉफ्ट एक्सेल

एक एक्सेल स्प्रेडशीट में, सूत्र = RAND () 0 और 1. के बीच एक यादृच्छिक संख्या उत्पन्न करेगा। उदाहरण के लिए, यदि आप किसी सेल को हाइलाइट करते हैं और = RAND () दर्ज करते हैं, तो सेल में एक नंबर होगा जो शीट के फिर से आने पर बदल जाएगा। -calculated।

यह विधि अन्य स्प्रेडशीट अनुप्रयोगों में भी काम करती है, जिसमें लिबरऑफिस कैल्क और गूगल शीट्स शामिल हैं।

प्रोग्रामिंग भाषाओं में

अधिकांश प्रोग्रामिंग भाषाओं के अपने PRNG फ़ंक्शन हैं। यहाँ कुछ सामान्य उदाहरण दिए गए हैं:

सी

सी प्रोग्रामिंग भाषा में, PRNG फ़ंक्शन मानक लाइब्रेरी, stdlib में परिभाषित किए गए हैं। यादृच्छिक जनरेटर को बीज करने का सामान्य तरीका समय () फ़ंक्शन के साथ है, जिसे time.h में घोषित किया गया है । उत्पन्न संख्या 0 और निरंतर RAND_MAX के बीच आती है, एक सिस्टम-विशिष्ट पूर्णांक कम से कम 32767 होने की गारंटी देता है।

 #include #include #include void main () {srand (time (NULL)); / * बीज जेनरेटर * / int rand1 = रैंड (); / * 0 और RAND_MAX * / प्रिंटफ के बीच एक छद्म आयामी पूर्णांक ("0 और% d के बीच यादृच्छिक संख्या:% d \ n", RAND_MAX, (int) rand1); / * या, एक विशिष्ट सीमा के भीतर: * / int मिनट = 0; int max = 100; फ्लोट rand2 = (फ्लोट) रैंड () * अधिकतम / RAND_MAX + 1; int round = (int) rand2; प्रिंटफ ("% d और% d के बीच यादृच्छिक संख्या:% d (% f) \ n", न्यूनतम, अधिकतम, गोल, r22); वापसी; } 

आउटपुट:

 यादृच्छिक संख्या 0 और 2147483647 के बीच: 1789080047 0 और 100 के बीच यादृच्छिक संख्या: 74 (74.369179) 

सी ++

C ++ में:

 #include #include #include int main () {srand (time (NULL)); std :: cout << "यादृच्छिक संख्या 0 और" << RAND_MAX << ":" << रैंड () << "\ n" << "1 और 100 के बीच रैंडम संख्या:" << (रैंड)% 100) + 1 << एसटीडी :: एंडल; वापसी 0; } 

आउटपुट:

 यादृच्छिक संख्या 0 और 2147483647 के बीच: 126569208 1 और 100: 9 के बीच यादृच्छिक संख्या 

अजगर ३

पायथन में यादृच्छिक मॉड्यूल यादृच्छिक संख्या उत्पन्न करने के लिए कई प्रकार के फ़ंक्शन प्रदान करता है। इस उदाहरण में, हम एक श्रेणी में एक यादृच्छिक पूर्णांक खोजने के लिए तीन अलग-अलग तरीकों का उपयोग करते हैं।

 डेटाटाइम से आयात आयात करें डाइमटाइम आयात करें random.seed (datetime.now ()) प्रिंट ("रेंज में यादृच्छिक संख्या [0, 1):", random.random ()) # एक सीमा के भीतर। ये सभी एक ही काम करते हैं: प्रिंट ("रैंडम नंबर 1 और 100 के बीच:", राउंड (random.random () * 100) + 1) प्रिंट ("रैंडम नंबर 1 और 100 के बीच:", random.randrange (1) 101) प्रिंट ("रैंडम नंबर 1 और 100 के बीच:", random.randint (1, 100) 

आउटपुट:

 श्रेणी में यादृच्छिक संख्या [0, 1): 0.05137418896158319 1 और 100 के बीच यादृच्छिक संख्या: 1 और 100 के बीच 27 यादृच्छिक संख्या: 1 और 100 के बीच 80 यादृच्छिक संख्या: 80 

पर्ल ५

पर्ल में:

 srand (समय); # प्रति सेकंड एक बार परिवर्तन "रेंज में यादृच्छिक संख्या [0, 1):", रैंड (), "\ n"; "रैंडम संख्या [1, 100]:", इंट (रैंड (101)), "\ n" प्रिंट करें; 

आउटपुट:

 श्रेणी में यादृच्छिक संख्या [0, 1): 0.691379946963028 श्रेणी में यादृच्छिक संख्या [0, 100] [82] 

जावास्क्रिप्ट

 कंसोल.लॉग ("रेंज में रैंडम संख्या [0, 1):" + Math.random ()); कंसोल.लॉग ("रेंज में यादृच्छिक संख्या [1, 100]:" + Math.floor (Math.random () * 101)); 

अपने वेब ब्राउज़र के जावास्क्रिप्ट कंसोल में आउटपुट देखें (उदाहरण के लिए, फ़ायरफ़ॉक्स में Ctrl + Shift + K दबाएं ):

 श्रेणी में यादृच्छिक संख्या [0, 1): 0.305008216755414 श्रेणी में यादृच्छिक संख्या [1, 100]: 8 

नोट: जावास्क्रिप्ट में Math.random () फंक्शन को सीड करना संभव नहीं है। यदि आपको जावास्क्रिप्ट में एक मजबूत PRNG की आवश्यकता है, तो GitHub पर जावास्क्रिप्ट के लिए बेहतर यादृच्छिक संख्या देखें।

उदाहरण PRNG: जावास्क्रिप्ट विजेट

नीचे दिए गए विजेट का उपयोग करके, आप एक PRNG बीज कर सकते हैं और यादृच्छिक संख्या उत्पन्न करने के लिए इसका उपयोग कर सकते हैं।

हर बार जब आप अपने दिए गए बीज से एक यादृच्छिक संख्या उत्पन्न करते हैं, तो इसकी भरपाई 1 से बढ़ जाती है। बीज से उत्पन्न पहली संख्या में ऑफसेट शून्य होती है, दूसरी में 1 ऑफसेट होती है, आदि जनरेटर हमेशा दिए गए बीज और ऑफसेट के लिए एक ही संख्या उत्पन्न करता है। ।

एक अद्वितीय बीज बनाने के लिए आप जिस भी क्षेत्र में जाना चाहते हैं उसे दर्ज करें।

उस बीज का उपयोग करके अगला रैंडम नंबर प्राप्त करने के लिए जेनरेट बटन का उपयोग करें और ऑफ़सेट बढ़ाएँ।

ऑफसेट को शून्य पर रीसेट करने के लिए रीसेट बटन का उपयोग करें।

बीज से उत्पन्न संख्या :

बीज ऑफसेट रीसेट करें (वर्तमान में 0 )

इस विजेट में जोहानस बागोए के खुले स्रोत PRNG स्क्रिप्ट, Alea.js और Mash.js. का उपयोग किया गया है

कंप्यूटर सुरक्षा, प्रोग्रामिंग, सॉफ्टवेयर शब्द