"यादृच्छिकता" को समझना


829

मैं इस के आसपास अपना सिर प्राप्त नहीं कर सकता, जो अधिक यादृच्छिक है?

rand()

या :

rand() * rand()

मैं इसे एक असली मस्तिष्क टीज़र ढूंढ रहा हूं, क्या आप मेरी मदद कर सकते हैं?


संपादित करें:

सहज रूप से मुझे पता है कि गणितीय उत्तर यह होगा कि वे समान रूप से यादृच्छिक हैं, लेकिन मैं मदद नहीं कर सकता लेकिन लगता है कि यदि आप दो बार "यादृच्छिक संख्या एल्गोरिथ्म" चलाते हैं तो जब आप दोनों को एक साथ गुणा करते हैं तो आप सिर्फ करने से कुछ अधिक यादृच्छिक बना देंगे। एक बार।


162
"अधिक यादृच्छिक" से आपका क्या तात्पर्य है?
dan04

55
जैसा कि दूसरों ने कहा है, इन दो मात्राओं का समान वितरण नहीं है। वितरण के लिए mathworld.wolfram.com/UniformProductDistribution.html देखें । इसकी तुलना एक समान रैंडम संख्या से करें, जहां अंतराल में सभी मान समान रूप से संभव हैं, इसलिए प्रायिकता घनत्व फ़ंक्शन एक क्षैतिज सीधी रेखा है।
बन्नुल

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

51
इसके अलावा: सहज रूप से मुझे पता है कि गणितीय उत्तर यह होगा कि वे समान रूप से यादृच्छिक हैं - यदि आप अकेले अंतर्ज्ञान द्वारा गणित कर सकते हैं, तो हमें उन सभी खूनी प्रतीकों की आवश्यकता नहीं होगी: P
dety

92
सांख्यिकी और अंतर्ज्ञान को एक ही पार्टी में न ले जाएं ....
डॉ। बिसरिसेर

जवाबों:


1481

सिर्फ एक स्पष्टीकरण

यद्यपि पिछले उत्तर सही हैं जब भी आप छद्म यादृच्छिक चर या उसके गुणन की यादृच्छिकता को स्पॉट करने का प्रयास करते हैं, तो आपको पता होना चाहिए कि रैंडम () आमतौर पर समान रूप से वितरित किया जाता है, रैंडम () * रैंडम () नहीं है।

उदाहरण

यह एक समान यादृच्छिक वितरण नमूना है जो एक छद्म यादृच्छिक चर के माध्यम से सिम्युलेटेड है:

रैंडम का हिस्टोग्राम ()

        BarChart[BinCounts[RandomReal[{0, 1}, 50000], 0.01]]

जबकि यह वह वितरण है जो आपको दो यादृच्छिक चर को गुणा करने के बाद मिलता है:

यादृच्छिक का हिस्टोग्राम () * रैंडम ()

        BarChart[BinCounts[Table[RandomReal[{0, 1}, 50000] * 
                                 RandomReal[{0, 1}, 50000], {50000}], 0.01]]

तो, दोनों "यादृच्छिक" हैं, लेकिन उनका वितरण बहुत अलग है।

एक और उदाहरण

जबकि 2 * रैंडम () समान रूप से वितरित किया जाता है:

2 * रैंडम का हिस्टोग्राम ()

        BarChart[BinCounts[2 * RandomReal[{0, 1}, 50000], 0.01]]

रैंडम () + रैंडम () नहीं है!

यादृच्छिक का हिस्टोग्राम () + रैंडम ()

        BarChart[BinCounts[Table[RandomReal[{0, 1}, 50000] + 
                                 RandomReal[{0, 1}, 50000], {50000}], 0.01]]

केंद्रीय सीमा प्रमेय

केंद्रीय सीमा प्रमेय कहा गया है कि की राशि रैंडम () एक आदत सामान्य वितरण शर्तों वृद्धि के रूप में।

केवल चार शर्तों के साथ:

यादृच्छिक का हिस्टोग्राम () + रैंडम () + रैंडम () + रैंडम ()

BarChart[BinCounts[Table[RandomReal[{0, 1}, 50000] + RandomReal[{0, 1}, 50000] +
                   Table[RandomReal[{0, 1}, 50000] + RandomReal[{0, 1}, 50000],
                   {50000}],
         0.01]]  

और यहाँ आप 1, 2, 4, 6, 10 और 20 को समान रूप से रैंडम वेरिएबल में जोड़कर एक समान वितरण से सड़क को एक सामान्य वितरण तक देख सकते हैं:

यादृच्छिक चर के विभिन्न संख्याओं का हिस्टोग्राम जोड़ा गया

संपादित करें

कुछ क्रेडिट

थॉमस अहले को उन टिप्पणियों में इंगित करने के लिए धन्यवाद , जो पिछले दो छवियों में दिखाए गए संभावित वितरण को इर-हॉल वितरण के रूप में जाना जाता है

उसके अद्भुत फटे [] समारोह के लिए हाइक के लिए धन्यवाद


41
+1। चूंकि ओपी संभवतः समान वितरण चाहते थे, इसलिए यह स्वीकृत उत्तर होना चाहिए। और अगर आपने किया rand()+rand(), तो आप "2d6" -टाइप वितरण के साथ वसा केंद्र के साथ समाप्त हो जाएंगे।
थिलो

8
यह बहुत दिलचस्प है, लेकिन यह मुझे अंदर से मारता है कि यह कैसे सहज है। वितरण के बारे में थोड़ा और पढ़ने के बाद मैं अधिक गहन रूप दूंगा। आपका बहुत बहुत धन्यवाद!
ट्रूफा

46
@ ट्रूफा: शायद यह अंतर्ज्ञान के भाग के साथ, कम से कम रकम के लिए मदद करेगा। एक लुढ़का हुआ मर के "औसत" लेने की कल्पना करो। अब दो पासा के औसत लेने की कल्पना करो। अब एक सौ। जैसा कि आप अधिक पासा जोड़ते हैं, औसत के लिए एक या एक छक्का लगाने की संभावना का क्या होता है?
जॉन्सिल्स

3
@ मट बी द चार्ट्स मैथमेटिका में वन-लाइनर्स हैं। कोड बोल्ड में पाठ है जो प्रत्येक ग्राफ से पहले होता है। Mathematica प्लॉट करने के लिए एक भयानक भाषा है!
डॉ। बेलिसोरस

4
@thenonhacker: हाँ, हिस्टोग्राम्स पूर्वाग्रह प्रदर्शित करते हैं, लेकिन वे गैर-यादृच्छिकता प्रदर्शित नहीं करते हैं। बायोडेड रैंडम नंबर कम रैंडम नहीं होते हैं। उपयोगकर्ता के मूल प्रश्न के सही उत्तर के लिए, "चतुर होने का प्रयास न करें, आप बस चीजों को बदतर बना देंगे," और यह उत्तर उस बिंदु को प्राप्त करता है।
केनेट बेलेंकी

152

मुझे लगता है कि दोनों विधियां उतनी ही यादृच्छिक हैं, हालांकि मेरे गुटफेल कहेंगे कि rand() * rand()यह कम यादृच्छिक है क्योंकि यह अधिक शून्य अंकुरित करेगा। जैसे ही एक rand()होता है 0, कुल बन जाता है0


18
इस पट्टी का उपयोग करते हुए सभी उत्तरों के लिए मेरा उत्तर यह है: मुझे हास्य पसंद है, लेकिन यह सीडब्ल्यू होना चाहिए!
एंड्रियास रिजेब्रांड

4
@Andomar: नहीं, यह नहीं है। हर्गिज नहीं। क्या आप जानते हैं कि CW क्या है?
एंड्रियास रिजेब्रांड

17
@ एन्द्रियास रिबब्रांड: सीडब्ल्यू एक ऐसा हथियार है जो जवाब देने वालों को प्रतिष्ठा से वंचित करके दिलचस्प सवालों को मारता है। ऐसा लगता है कि इसे nerfed meta.stackexchange.com/questions/392/… (जो शायद इस दिलचस्प सवाल का कारण
बनता है

11
@Andomar - हां, सीडब्ल्यू दिलचस्प सवालों को मारता है, लेकिन ( अक्सर पूछे जाने वाले प्रश्न से ) "प्रतिष्ठा इस बात का एक मोटा माप है कि समुदाय आप पर कितना भरोसा करता है।" यदि आप अपने उत्तर में एक मज़ाकिया, कॉपीराइट वाली छवि शामिल करते हैं, तो इससे मुझे लगेगा कि आपका उत्तर ठंडा है, और मैं शायद सोचूंगा कि आप शांत भी हैं, लेकिन यह आपको अधिक विश्वास योग्य नहीं बनाता है - इसलिए, आदर्श रूप से, कोई प्रतिनिधि नहीं सम्मानित किया जाना चाहिए। क्या इसका मतलब सीडब्ल्यू है, या क्या इसका मतलब है कि किसी को जवाब नहीं देना चाहिए एक और मुद्दा है।
रिचर्ड जेपी ले गुएन

13
कार्टून में "रैंडम जेनरेटर" ट्रोल सिर्फ ant सुनाने वाला एक सावंत हो सकता है, और सिर्फ फेनमैन बिंदु तक पहुंच सकता है । btw, s अंक यादृच्छिक हैं? :)
मीकल २०'१०

82

न ही 'अधिक यादृच्छिक' है।

rand()(आमतौर पर वर्तमान समय है, जो हमेशा बदलता रहता है के आधार पर) एक छद्म-यादृच्छिक बीज के आधार पर संख्या का एक उम्मीद के मुताबिक सेट उत्पन्न करता है। अनुक्रम में दो लगातार संख्याओं को गुणा करना एक अलग, लेकिन समान रूप से अनुमानित, संख्याओं का अनुक्रम उत्पन्न करता है।

यह कहते हुए कि क्या इससे टकराव कम होंगे, जवाब नहीं है। यह दो संख्याओं को गुणा करने के प्रभाव के कारण वास्तव में टकराव को बढ़ाएगा 0 < n < 1। परिणाम एक छोटा सा अंश होगा, जिसके परिणामस्वरूप स्पेक्ट्रम के निचले छोर की ओर एक पूर्वाग्रह पैदा होगा।

कुछ और स्पष्टीकरण। निम्नलिखित में, 'अप्रत्याशित' और 'यादृच्छिक' किसी की क्षमता का अनुमान लगाने के लिए कहते हैं कि अगली संख्या पिछली संख्याओं के आधार पर क्या होगी। एक अलंकृत।

दिया गया बीज xजो मूल्यों की निम्नलिखित सूची तैयार करता है:

0.3, 0.6, 0.2, 0.4, 0.8, 0.1, 0.7, 0.3, ...

rand()उपरोक्त सूची rand() * rand()उत्पन्न करेगा , और उत्पन्न करेगा:

0.18, 0.08, 0.08, 0.21, ...

दोनों विधियां हमेशा एक ही बीज के लिए एक ही संख्या की सूची का उत्पादन करेंगी, और इसलिए एक ओरेकल द्वारा समान रूप से अनुमानित हैं। लेकिन यदि आप दो कॉलों को गुणा करने के परिणामों को देखते हैं, तो आप देखेंगे कि वे 0.3मूल अनुक्रम में एक सभ्य वितरण के बावजूद सभी के अधीन हैं । दो अंशों को गुणा करने के प्रभाव के कारण संख्या पक्षपाती है। परिणामी संख्या हमेशा छोटी होती है, इसलिए अभी भी अप्रत्याशित होने के बावजूद टकराव होने की अधिक संभावना है।


9
+1 ध्यान दें कि दूसरी तरफ rand()+rand()+rand()...तेजी से "कम यादृच्छिक" हो जाता है (यदि यादृच्छिक रूप से आपका मतलब समान रूप से वितरित है)।
थिलो

4
@ थिलो नहीं, यह नहीं है ...? यदि किसी रैंडम वैरिएबल को रेंज (0,1) में समान रूप से वितरित किया जाता है, और आप वेरिएबल n को बार-बार सैंपल लेते हैं, और राशि लेते हैं, तो यह समान रूप से रेंज (0, n) में वितरित किया जाएगा।
user359996

5
@ ट्रूफा rand()वास्तव में यादृच्छिक होने के लिए भरोसा करता है, और यह यादृच्छिकता को 'बढ़ाने' की कोशिश नहीं करता है। बीज को कई बार सेट न करें। कोई भी व्यक्तिगत बीज पूरी तरह से ठीक है, जब तक कि यह अर्ध-यादृच्छिक न हो। कार्यान्वयन के बहुत सारे मैंने UNIX युग का उपयोग बीज के रूप में किया है, जो हर पल बदलता है और हर बार जब यह बदलता है तो अद्वितीय होता है।
मैथ्यू शारले

61
@ user359996 रैंड () + रैंड () समान रूप से वितरित नहीं है। दो पासा जोड़ें, आपको 2 से 7 प्राप्त करने की अधिक संभावना है
लियाम

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

80

एक बिंदु को स्पष्ट करने के लिए प्रसार।

अपने रैंडम फ़ंक्शन को केवल आउटपुट 0या मान लें 1

random()इनमें से एक है (0,1), लेकिन random()*random()इनमें से एक है(0,0,0,1)

आप स्पष्ट रूप से देख सकते हैं कि 0दूसरे मामले में प्राप्त करने की संभावना किसी भी तरह से उन लोगों के बराबर नहीं है 1


जब मैंने पहली बार इस उत्तर को पोस्ट किया तो मैं इसे यथासंभव छोटा रखना चाहता था ताकि इसे पढ़ने वाला व्यक्ति एक नज़र से अंतर के बारे में समझ सके random()और random()*random(), लेकिन मैं मूल विज्ञापन लिटरम प्रश्न का उत्तर देने से खुद को दूर नहीं रख सकता:

कौन सा अधिक यादृच्छिक है?

जा रहा है कि random(), random()*random(), random()+random(), (random()+1)/2या किसी अन्य संयोजन है कि एक निश्चित परिणाम के लिए नेतृत्व नहीं करता है (कूट-यादृच्छिक जनरेटर के मामले में या एक ही प्रारंभिक अवस्था) एन्ट्रापी की एक ही स्रोत है, जवाब है कि वे कर रहे हैं हो सकता है समान रूप से यादृच्छिक (अंतर उनके वितरण में है)। एक आदर्श उदाहरण हम देख सकते हैं क्रेप्स का खेल है। आपको प्राप्त होने वाली संख्या होगी random(1,6)+random(1,6)और हम सभी जानते हैं कि 7 प्राप्त करने का सबसे अधिक मौका है, लेकिन इसका मतलब यह नहीं है कि दो पासा रोल करने का परिणाम एक रोल करने के परिणाम की तुलना में अधिक या कम यादृच्छिक है।


+1 "कुछ अलग-अलग वितरणों पर समान रूप से बेतरतीब ढंग से" ट्रिकी के रूप में। बहुत खूबसूरत।
जेन्स रोलैंड

3
इसलिए तकनीकी रूप से, (यादृच्छिक () * 0 + 9) समान रूप से यादृच्छिक है, क्योंकि यह 1-तत्व सेट से यादृच्छिक रूप से एक मान लौटाता है: [9]। दिलबर्ट कार्टून सही था।
जेन्स रोलैंड

2
@ जैन रोलन "कोई अन्य संयोजन जो एक निश्चित परिणाम के लिए नेतृत्व नहीं करता है";)। 999999 <i> शायद </ i> यादृच्छिक रूप से उत्पन्न नहीं होता है और मौका है कि इसे यादृच्छिक रूप से उत्पन्न किया जा सकता है।
अलीन पुरकारू

69

यहाँ एक सरल जवाब है। एकाधिकार पर विचार करें। आप दो छह पक्षीय पासा रोल करते हैं (या आप में से जो गेमिंग संकेतन पसंद करते हैं, उनके लिए 2d6) और उनकी राशि लेते हैं। सबसे आम परिणाम 7 है क्योंकि 6 संभावित तरीके हैं जिनसे आप 7 (1,6 2,5 3,4 4,3 5,2 और 6,1) रोल कर सकते हैं। जबकि एक 2 को केवल 1,1 पर लुढ़काया जा सकता है। यह देखना आसान है कि 2d6 को रोल करना 1d12 को रोल करने से अलग है, भले ही रेंज एक ही हो (अनदेखा करने पर आप 1d12 पर 1 प्राप्त कर सकते हैं, बिंदु एक ही रहता है)। उन्हें जोड़ने के बजाय अपने परिणामों को गुणा करना, उन्हें इसी तरह से तिरछा करना है, जिसमें आपके अधिकांश परिणाम सीमा के बीच में आते हैं। यदि आप आउटलेर्स को कम करने की कोशिश कर रहे हैं, तो यह एक अच्छा तरीका है, लेकिन यह एक समान वितरण करने में मदद नहीं करेगा।

(और अजीब तरह से यह कम रोल को भी बढ़ाएगा। मान लें कि आपकी यादृच्छिकता 0 से शुरू होती है, तो आपको 0 पर एक स्पाइक दिखाई देगा, क्योंकि यह अन्य रोल जो भी होगा वह 0 में होगा। 0 और 1 के बीच दो यादृच्छिक संख्याओं पर विचार करें (समावेशी ) और गुणा करना। यदि कोई परिणाम 0 है, तो पूरी बात 0 एक अन्य परिणाम के रूप में कोई फर्क नहीं पड़ता है। इसमें से 1 प्राप्त करने का एकमात्र तरीका दोनों रोल के लिए 1 होना है। व्यवहार में यह संभवतः कोई मायने नहीं रखेगा। लेकिन यह एक अजीब ग्राफ के लिए बनाता है।)


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

53

अनिवार्य xkcd ...
वापसी 4;  // उचित पासा रोल द्वारा चुना गया, यादृच्छिक होने की गारंटी।


7
danmn यह हमेशा समाप्त होता है जब शब्द "यादृच्छिक प्रतीत होता है" दिखाई देता है :) मैं इसका इंतजार कर रहा था !!
तृफा

9
मुझे हास्य पसंद है, लेकिन यह सीडब्ल्यू होना चाहिए।
एंड्रियास रिजेब्रांड

2
@ आंद्रेज रिब्रांड - यह "हास्य" का जवाब सीडब्ल्यू क्यों होना चाहिए?
वॉरेन

16
यदि यह सीडब्ल्यू नहीं है, तो प्रतिष्ठा हर बार मतदान के बाद (160 प्रतिनिधि अब तक) उत्तर का पोस्टर बन जाएगा। अब, प्रतिष्ठा स्कूल में ग्रेड की तरह है - यह तकनीकी का प्रमाण पत्र होना चाहिए (इस मामले में, प्रोग्रामिंग) प्रवीणता। इसलिए, किसी को कुछ ऐसा पोस्ट करके प्रतिष्ठा हासिल करने में सक्षम नहीं होना चाहिए, जो आसानी से उकेरा जा सकता है, लेकिन इस तरह की किसी भी प्रोफेशनली की जरूरत नहीं है। इसके अलावा, प्रतिष्ठा स्कोर भी उपयोगकर्ता के विशेषाधिकारों को निर्धारित करता है। उदाहरण के लिए, 10 000 स्कोर पर, उपयोगकर्ता को StackOverflow में मॉडरेशन टूल तक पहुंच मिलती है।
एंड्रियास रिब्रांडैंड

35

अधिक असतत संख्याओं में यह सोचने में मदद मिल सकती है। विचार करें कि 1 और 36 के बीच यादृच्छिक संख्या उत्पन्न करना चाहते हैं, इसलिए आप तय करते हैं कि सबसे आसान तरीका दो निष्पक्ष, 6-पक्षीय पासा फेंक रहा है। आप इसे प्राप्त करें:

     1    2    3    4    5    6
  -----------------------------
1|   1    2    3    4    5    6
2|   2    4    6    8   10   12
3|   3    6    9   12   15   18
4|   4    8   12   16   20   24   
5|   5   10   15   20   25   30
6|   6   12   18   24   30   36

इसलिए हमारे पास 36 नंबर हैं, लेकिन उनमें से सभी का प्रतिनिधित्व नहीं किया गया है, और कुछ बिल्कुल भी नहीं होते हैं। केंद्र विकर्ण के पास (नीचे-बाएं कोने से शीर्ष-दाएं कोने तक) उच्चतम आवृत्ति के साथ होंगे।

समान सिद्धांत जो पासा के बीच अनुचित वितरण का वर्णन करते हैं, 0.0 और 1.0 के बीच फ्लोटिंग पॉइंट नंबरों पर समान रूप से लागू होते हैं।


3
+1 अधिक समवर्ती दिखाने के लिए, यादृच्छिक संख्याओं को गुणा करने पर वितरण में परिवर्तन। मैट्रिक्स ने केवल शब्दों या एक वितरण ग्राफ की तुलना में अधिक मदद की।
मार्जन वेनेमा

26

"यादृच्छिकता" के बारे में कुछ बातें काउंटर-सहज ज्ञान युक्त हैं।

rand()निम्नलिखित के फ्लैट वितरण को मानते हुए , आपको निम्नलिखित गैर-फ्लैट वितरण मिलेंगे:

  • उच्च पूर्वाग्रह: sqrt(rand(range^2))
  • पूर्वाग्रह बीच में बढ़ता है: (rand(range) + rand(range))/2
  • कम: पूर्वाग्रह: range - sqrt(rand(range^2))

विशिष्ट पूर्वाग्रह वक्र बनाने के लिए बहुत सारे अन्य तरीके हैं। मैंने एक त्वरित परीक्षण किया rand() * rand()और यह आपको एक बहुत ही गैर-रैखिक वितरण प्राप्त करता है।


24

अधिकांश रैंड () कार्यान्वयन में कुछ अवधि होती है। Ie के कुछ भारी संख्या के बाद अनुक्रम दोहराता है। rand() * rand()आधे समय में दोहराव के आउटपुट का क्रम , इसलिए यह उस अर्थ में "कम यादृच्छिक" है।

इसके अलावा, सावधान निर्माण के बिना, यादृच्छिक मूल्यों पर अंकगणित का प्रदर्शन कम यादृच्छिकता का कारण बनता है। " rand()+ rand()+ rand()..." (के समय, ऊपर) का हवाला देते हुए एक पोस्टर , जो वास्तव में मानों की श्रेणी के औसत मूल्य के k गुना होगा rand()। (यह उस मतलब के बारे में सममित कदम के साथ एक यादृच्छिक चलना है।)

समझदारी के लिए मान लें कि आपका रैंड () फ़ंक्शन समान सीमा में समान रूप से वितरित यादृच्छिक वास्तविक संख्या प्रदान करता है [0,1)। (हां, यह उदाहरण अनंत परिशुद्धता की अनुमति देता है। यह परिणाम नहीं बदलेगा।) आपने किसी विशेष भाषा को नहीं चुना और विभिन्न भाषाएं अलग-अलग चीजें कर सकती हैं, लेकिन निम्नलिखित विश्लेषण रैंड के किसी भी गैर-विकृत कार्यान्वयन के लिए संशोधनों के साथ रखता है ( )। उत्पाद rand() * rand()रेंज [0,1) में भी है, लेकिन अब समान रूप से वितरित नहीं किया गया है। वास्तव में, उत्पाद अंतराल [0,1 / 4) में होने की संभावना है जैसा कि अंतराल [1 / 4,1) में है। अधिक गुणन परिणाम को शून्य की ओर भी आगे बढ़ाएगा। यह परिणाम को अधिक अनुमानित बनाता है। व्यापक स्ट्रोक में, अधिक अनुमानित == कम यादृच्छिक।

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


मैंने यह भी सोचा था, कि यह रैंडम जनरेटर पीरियड से दोगुनी तेजी से गुजर रहा होगा।
जारेड अपडेटाइक

3
अनुक्रम लंबाई केवल आधे में कटौती की जाएगी यदि यह भी है। यदि यह विषम है, तो आपको r1 * r2, r3 * r4, ..., rn * r1, r2 * r3, r4 * r5 मिलता है, और कुल लंबाई समान है।
जेंडर

23

"रैंडम" बनाम "अधिक रैंडम" यह पूछने के लिए थोड़ा सा है कि कौन सा शून्य अधिक शून्य है।

इस मामले में, randएक PRNG है, इसलिए पूरी तरह से यादृच्छिक नहीं है। (वास्तव में, यदि बीज ज्ञात है तो काफी अनुमानित है)। इसे दूसरे मूल्य से गुणा करने पर यह अधिक या कम यादृच्छिक नहीं बनता है।

एक वास्तविक क्रिप्टो-टाइप आरएनजी वास्तव में यादृच्छिक होगा। और किसी भी प्रकार के फ़ंक्शन के माध्यम से चल रहे मान इसमें अधिक एन्ट्रॉपी नहीं जोड़ सकते हैं, और एंट्रोपी को हटाने की बहुत संभावना है, जिससे यह अधिक यादृच्छिक नहीं हो सकता है।


3
ध्यान दें, यह एक अलग मूल्य के साथ प्रत्येक कॉल के बाद से चुकता नहीं है। हालांकि बाकी सब कुछ सटीक है।
मैथ्यू शार्ले

2
@thenonhacker: आपके अपने विवरण के अनुसार, अनुक्रम "1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10 , 1,2,3,4,5,6,7,8,9,10 ... "यादृच्छिक है। यह समान रूप से वितरित किया जाता है, सभी नंबरों को उचित मौका मिलता है। कोई शिखर या पक्षपात नहीं है। क्या आप वास्तव में उस अनुक्रम को यादृच्छिक मानते हैं ??? आपको अपनी परिभाषा बदलने की जरूरत है। रैंडम आउटपुट के बारे में नहीं है, रैंडम आउटपुट बनाने के लिए इस्तेमाल की जाने वाली प्रक्रिया के बारे में है
अबेलेंस्की

2
@CurtainDog: टेक्स्ट-कम्प्रेशन उसी तरह की एन्ट्रापी के स्तर को बनाए रखता है जबकि एन्ट्रापी की समान मात्रा को व्यक्त करने के लिए आवश्यक बिट्स की संख्या को कम करता है।
केनेट बेलेंकी

4
@thenonhacker, @abelenky: यहां तक ​​कि वितरण आसान है। एक यादृच्छिक संख्या जनरेटर में क्या मायने रखता है यादृच्छिक संख्या जनरेटर की स्थिति में बिट्स की संख्या है। एक शून्य-राज्य यादृच्छिक संख्या जनरेटर (जैसे 4, 4, 4, 4, 4, ...) पूरी तरह से अनुमानित है। एक बार के पैड में उतने ही राज्य होते हैं जितने मूल्य में यह उत्पादन होता है, इस प्रकार यह भविष्यवाणी करना असंभव है। दो PNRG का एक कन्ट्रोवर्सी PNRG उतने ही बिट्रॉपी के रूप में उत्पन्न करेगा, जितना कि वे दोनों में होते हैं, अपने सहवास को शून्य करते हैं।
केनेट बेलेंकी

1
@Kennet - धन्यवाद, आपने मेरे लिए बहुत सफाई दी है। @abelenky - शांत, मैं तुम्हें अब मिल।
पर्देटनडॉग

20

आप जिस अवधारणा की तलाश कर रहे हैं, वह "एन्ट्रापी," बिट्स के एक स्ट्रिंग के विकार की "डिग्री" है। "अधिकतम एन्ट्रापी" की अवधारणा के संदर्भ में विचार को समझना सबसे आसान है।

अधिकतम एन्ट्रापी के साथ बिट्स के एक स्ट्रिंग की अनुमानित परिभाषा यह है कि इसे बिट्स की छोटी स्ट्रिंग के संदर्भ में बिल्कुल व्यक्त नहीं किया जा सकता है (अर्थात मूल स्ट्रिंग में वापस छोटे स्ट्रिंग का विस्तार करने के लिए कुछ एल्गोरिदम का उपयोग करके)।

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

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

अधिक व्यावहारिक नोट पर, यदि आप अपने आप को एक भद्दा रैंड () के साथ दुखी पाते हैं, तो यह कभी-कभी कुछ नमूनों को एक साथ एक्सर करने में मदद कर सकता है --- हालांकि, अगर इसकी सही मायने में टूटी हुई प्रक्रिया भी मदद नहीं करेगी।


2
मैंने xor के माध्यम से यादृच्छिक संख्या वाली पीढ़ियों के बारे में कभी नहीं सोचा था, लेकिन मुझे लगता है कि आप अवधारणा को बहुत दूर ले जा सकते हैं ( en.wikipedia.org/wiki/Mersenne_twister )! जवाब के लिए धन्यवाद।
गेब्रियल मिशेल

1
मैं वास्तव में इस जवाब को टटोलने के लिए संघर्ष कर रहा हूं ... क्या stackoverflow.com/questions/3956478/understanding-randomness/… और दिए गए जवाबों से दिए गए अधिकतम एन्ट्रापी को हराया नहीं गया है। और stackoverflow.com/questions/3956478-understanding-randomness/… । इन मामलों में उठाया गया नंबर संपीड़ित नहीं किया जा सकता है, लेकिन आपको उन्हें यादृच्छिक कहने के लिए कड़ी मेहनत करनी होगी।
कर्टनडॉग

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

1
@CurtainDog xkcd का रैंडम नंबर 4या बाइनरी 0100जीरो बिट्स पर संपीड़ित हो सकता है। विघटन कार्यक्रम केवल '4' लौटाएगा। यह उससे कम यादृच्छिक नहीं मिलता है। डिबर्ट के साथ समस्या यह है, हम नहीं जानते कि क्या हम इसे शून्य बिट्स तक संपीड़ित कर सकते हैं (हमेशा 'नौ' लौटकर)। यह आठ अस्वस्थ वापस आ सकता है, तो हम 1 बिट पर सेक कर सकते हैं Decompressing द्वारा: 0-> नौ, 1-> आठ। हम 1 यादृच्छिक बिट होगा।
ईशर

14

स्वीकृत उत्तर काफी प्यारा है, लेकिन आपके प्रश्न का उत्तर देने का एक और तरीका है। PachydermPuncher का जवाब पहले से ही इस वैकल्पिक दृष्टिकोण को लेता है, और मैं अभी इसे थोड़ा विस्तार करने जा रहा हूं।

सूचना सिद्धांत के बारे में सोचने का सबसे आसान तरीका सूचना की सबसे छोटी इकाई, एक एकल बिट के संदर्भ में है।

C मानक लाइब्रेरी में, rand()0 से सीमा तक पूर्णांक देता है RAND_MAX, एक सीमा जिसे प्लेटफ़ॉर्म के आधार पर अलग-अलग परिभाषित किया जा सकता है। मान लीजिए RAND_MAXरूप में परिभाषित किया जा करने के लिए होता है 2^n - 1, जहां nकुछ पूर्णांक है (यह माइक्रोसॉफ्ट के कार्यान्वयन, जहां के मामले में होता है n15) है। तब हम कहेंगे कि एक अच्छा कार्यान्वयन nसूचना के बिट्स लौटाएगा ।

कल्पना करें कि rand()एक बिट के मूल्य को खोजने के लिए एक सिक्के को फ़्लिप करके यादृच्छिक संख्या का निर्माण होता है, और तब तक दोहराता है जब तक कि इसमें 15 बिट्स का बैच न हो। तब बिट्स स्वतंत्र होते हैं (किसी एक बिट का मूल्य एक ही बैच में अन्य बिट्स की संभावना को प्रभावित नहीं करता है)। तो स्वतंत्र रूप से माना जाने वाला प्रत्येक बिट 0 और 1 समावेशी के बीच एक यादृच्छिक संख्या की तरह है, और उस सीमा पर "समान रूप से वितरित" (जैसा कि 0 के रूप में 1 होने की संभावना है)।

बिट्स की स्वतंत्रता यह सुनिश्चित करती है कि बिट्स के बैचों द्वारा दर्शाए गए नंबर भी उनकी सीमा पर समान रूप से वितरित किए जाएंगे। यह सहज रूप से स्पष्ट है: यदि 15 बिट्स हैं, तो अनुमत सीमा शून्य से 2^15 - 1= 32767 है। उस सीमा में प्रत्येक संख्या बिट्स का एक अनूठा पैटर्न है, जैसे:

010110101110010

और यदि बिट्स स्वतंत्र हैं, तो कोई भी पैटर्न किसी अन्य पैटर्न की तुलना में होने की अधिक संभावना नहीं है। तो रेंज में सभी संभावित संख्या समान रूप से होने की संभावना है। और इसलिए रिवर्स सच है: यदि rand()समान रूप से वितरित पूर्णांक का उत्पादन होता है, तो वे संख्याएं स्वतंत्र बिट से बनती हैं।

तो rand()बिट्स बनाने के लिए एक उत्पादन लाइन के रूप में सोचें , जो सिर्फ उन्हें मनमाने आकार के बैचों में सेवा करने के लिए होता है। यदि आपको आकार पसंद नहीं है, तो अलग-अलग बिट्स में बैचों को तोड़ दें, और फिर उन्हें वापस एक साथ उन मात्राओं में डालें जो आपको पसंद हैं (हालांकि अगर आपको एक विशेष सीमा की आवश्यकता है जो 2 की शक्ति नहीं है, तो आपको अपने नंबरों को छोटा करना होगा। , और अब तक का सबसे आसान तरीका यह है कि फ्लोटिंग पॉइंट में परिवर्तित किया जाए)।

अपने मूल सुझाव पर लौटते हुए, मान लीजिए कि आप 15 के बैच से 30 के बीच में जाना चाहते हैं, rand()पहले नंबर के लिए पूछें , इसे 15 स्थानों पर बिट-शिफ्ट करें, फिर rand()इसमें दूसरा जोड़ें । यह एक rand()वितरण को परेशान किए बिना दो कॉल को संयोजित करने का एक तरीका है । यह केवल इसलिए काम करता है क्योंकि उन स्थानों के बीच कोई ओवरलैप नहीं है जहां आप जानकारी के बिट्स रखते हैं।

यह rand()एक स्थिर से गुणा करके "रेंज" को खींचने के लिए बहुत अलग है । उदाहरण के लिए, यदि आप की सीमा को दोगुना करना चाहते थे, तो आप rand()दो से गुणा कर सकते थे - लेकिन अब आपको केवल संख्याएँ मिलेंगी, और कभी विषम संख्याएँ नहीं! यह बिल्कुल सुचारू वितरण नहीं है और आवेदन के आधार पर एक गंभीर समस्या हो सकती है, उदाहरण के लिए रूलेट जैसा खेल माना जाता है कि यह अजीब / अन्य दांव की अनुमति देता है। (बिट्स के संदर्भ में सोचकर, आप उस गलती से सहज रूप से बचेंगे, क्योंकि आपको एहसास होगा कि दो से गुणा करना बिट्स को बाईं ओर शिफ्ट करना है) (एक से अधिक महत्व) एक स्थान पर और शून्य के साथ अंतराल को भरना। तो जाहिर है कि जानकारी की मात्रा समान है - यह बस थोड़ा स्थानांतरित हो गया।)

फ़्लोटिंग पॉइंट नंबरों के बारे में नंबर रेंज के ऐसे गैप को नहीं पकड़ा जा सकता है, क्योंकि फ़्लोटिंग पॉइंट रेंज में स्वाभाविक रूप से गैप होते हैं, जिनका बस प्रतिनिधित्व नहीं किया जा सकता है: हर दो रिप्लेसेबल फ़्लोटिंग के बीच की खाई में अनंत संख्या में गायब वास्तविक संख्याएँ मौजूद होती हैं। बिंदु संख्या! इसलिए हमें बस अंतराल के साथ रहना सीखना होगा।

जैसा कि दूसरों ने चेतावनी दी है, इस क्षेत्र में अंतर्ज्ञान जोखिम भरा है, खासकर क्योंकि गणितज्ञ वास्तविक संख्याओं के आकर्षण का विरोध नहीं कर सकते हैं, जो बुरी तरह से असीम और स्पष्ट विरोधाभासों से भरी चीजों को भ्रमित कर रहे हैं।

लेकिन कम से कम यदि आप इसे बिट्स की शर्तों के बारे में सोचते हैं, तो आपका अंतर्ज्ञान आपको थोड़ा आगे बढ़ा सकता है। बिट्स वास्तव में आसान हैं - यहां तक ​​कि कंप्यूटर भी उन्हें समझ सकते हैं।


3
+1: वास्तव में, पूरे (गणितीय) पूर्णांक में संख्याओं की तुलना में किसी भी दो IEEE डबल सटीक फ़्लोट्स के बीच अधिक संख्याएँ गायब हैं।
डोना फेलो

13

जैसा कि दूसरों ने कहा है, आसान संक्षिप्त उत्तर है: नहीं, यह अधिक यादृच्छिक नहीं है, लेकिन यह वितरण को बदलता है।

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

मुझे लगता है कि वास्तविक जीवन में ऐसी प्रक्रिया उपयोगी हो सकती है यदि आपको संदेह है कि पासा उचित नहीं हो सकता है। यदि, कहते हैं, पासा थोड़ा असंतुलित है, तो एक बार में 1/6 से अधिक बार देने के लिए जाता है, और दूसरा अक्सर असामान्य रूप से 6 देने के लिए जाता है, तो दोनों के बीच बेतरतीब ढंग से चयन पूर्वाग्रह को अस्पष्ट करते हैं। (हालांकि इस मामले में, 1 और 6 अभी भी 2, 3, 4 और 5 से अधिक आएंगे। खैर, मुझे लगता है कि असंतुलन की प्रकृति के आधार पर।)

यादृच्छिकता की कई परिभाषाएँ हैं। एक यादृच्छिक श्रृंखला की एक परिभाषा यह है कि यह एक यादृच्छिक प्रक्रिया द्वारा उत्पादित संख्याओं की एक श्रृंखला है। इस परिभाषा के अनुसार, अगर मैं 5 बार मर जाता हूं और 2, 4, 3, 2, 5 नंबर प्राप्त करता हूं, तो यह एक यादृच्छिक श्रृंखला है। यदि मैं फिर उसी मेले को 5 और बार लुढ़काता हूं और 1, 1, 1, 1, 1 प्राप्त करता हूं, तो वह भी एक यादृच्छिक श्रृंखला है।

कई पोस्टरों ने बताया है कि कंप्यूटर पर यादृच्छिक कार्य वास्तव में यादृच्छिक नहीं हैं, बल्कि छद्म यादृच्छिक हैं, और यदि आप एल्गोरिथ्म और बीज को जानते हैं तो वे पूरी तरह से अनुमानित हैं। यह सच है, लेकिन ज्यादातर समय पूरी तरह से अप्रासंगिक है। अगर मैं ताश के पत्तों का एक फेरबदल करता हूं और फिर उन्हें एक बार में चालू कर देता हूं, तो यह एक यादृच्छिक श्रृंखला होनी चाहिए। यदि कोई कार्डों में झांकता है, तो परिणाम पूरी तरह से अनुमानित होगा, लेकिन यादृच्छिकता की अधिकांश परिभाषाओं से यह इसे कम यादृच्छिक नहीं बना देगा। यदि श्रृंखला यादृच्छिकता के सांख्यिकीय परीक्षण पास करती है, तो इस तथ्य को कि मैंने कार्ड में झांक कर उस तथ्य को नहीं बदला है। व्यवहार में, यदि हम अगले कार्ड का अनुमान लगाने की आपकी क्षमता पर बड़ी रकम का जुगाड़ कर रहे हैं, तो यह तथ्य कि आपने कार्ड में झाँका है, वह बहुत प्रासंगिक है। यदि हम सिस्टम के प्रदर्शन का परीक्षण करने के लिए हमारी वेब साइट पर आगंतुकों के मेनू पिक्स का अनुकरण करने के लिए श्रृंखला का उपयोग कर रहे हैं, तो आपके द्वारा देखे गए तथ्य से कोई फर्क नहीं पड़ेगा। (जब तक आप इस ज्ञान का लाभ उठाने के लिए कार्यक्रम को संशोधित नहीं करते हैं।)

संपादित करें

मुझे नहीं लगता कि मैं एक टिप्पणी में मोंटी हॉल समस्या के लिए अपनी प्रतिक्रिया दे सकता हूं, इसलिए मैं अपना जवाब अपडेट करूंगा।

जो बेलिसियस लिंक नहीं पढ़ते थे, उनके लिए यह है: एक गेम शो प्रतियोगी को 3 दरवाजों का विकल्प दिया जाता है। एक के पीछे एक मूल्यवान पुरस्कार है, दूसरों के पीछे कुछ बेकार है। वह # 1 दरवाजा चुनता है। यह पता लगाने से पहले कि यह विजेता है या हारने वाला, मेजबान यह प्रकट करने के लिए # 3 दरवाजा खोलता है कि यह हारने वाला है। वह तब प्रतियोगी को दरवाजा # 2 पर स्विच करने का अवसर देता है। प्रतियोगी को ऐसा करना चाहिए या नहीं?

जवाब, जो कई लोगों के अंतर्ज्ञान को रोकता है, वह यह है कि उसे स्विच करना चाहिए। संभावना है कि उनका मूल पिक विजेता था 1/3, कि दूसरा दरवाजा विजेता है 2/3। मेरे प्रारंभिक अंतर्ज्ञान, कई अन्य लोगों के साथ, यह है कि स्विचिंग में कोई लाभ नहीं होगा, कि बाधाओं को सिर्फ 50:50 में बदल दिया गया है।

आखिरकार, मान लीजिए कि मेजबान द्वारा हारने का दरवाजा खोलने के बाद ही किसी ने टीवी चालू किया। उस व्यक्ति को दो बचे हुए दरवाजे दिखाई देंगे। यह मानते हुए कि वह खेल की प्रकृति को जानता है, वह कहेगा कि पुरस्कार को छिपाने वाले प्रत्येक दरवाजे का 1/2 मौका है। दर्शक के लिए ऑड्स 1/2: 1/2 कैसे हो सकते हैं जबकि प्रतियोगी के लिए ऑड्स 1/3: 2/3 हैं?

मुझे वास्तव में अपने अंतर्ज्ञान को आकार में हरा देने के लिए इस बारे में सोचना था। उस पर एक हैंडल पाने के लिए, यह समझें कि जब हम इस तरह की समस्या में संभावनाओं के बारे में बात करते हैं, तो हमारा मतलब है, आपके द्वारा उपलब्ध जानकारी प्रदान की गई संभावना। चालक दल के एक सदस्य के लिए, जो पुरस्कार के पीछे लगाते हैं, कहते हैं, दरवाजा # 1, संभावना यह है कि पुरस्कार दरवाजे # 1 के पीछे 100% है और यह संभावना है कि यह अन्य दो दरवाजों में से किसी एक के पीछे है।

चालक दल के सदस्य की संभावनाएं प्रतियोगी की बाधाओं से भिन्न होती हैं क्योंकि वह जानता है कि प्रतियोगी कुछ ऐसा नहीं करता है, अर्थात्, वह किस दरवाजे के पीछे पुरस्कार रखता है। इसी तरह, प्रतियोगी की ऑडियंस दर्शक की बाधाओं से अलग होती है क्योंकि वह कुछ ऐसा जानता है जिसे दर्शक शुरू में नहीं करता है, अर्थात वह किस दरवाजे से उठा है। यह अप्रासंगिक नहीं है, क्योंकि मेजबान के लिए किस दरवाजे को खोलने का विकल्प यादृच्छिक नहीं है। वह उस दरवाजे को नहीं खोलेगा जो प्रतियोगी ने चुना था, और वह उस दरवाजे को नहीं खोलेगा जो पुरस्कार को छिपाता है। यदि ये एक ही द्वार हैं, तो यह दो विकल्प छोड़ देता है। यदि वे अलग-अलग दरवाजे हैं, जो केवल एक को छोड़ देता है।

तो हम 1/3 और 2/3 के साथ कैसे आए? जब प्रतियोगी ने मूल रूप से एक दरवाजा उठाया, तो उसके पास विजेता को चुनने का 1/3 मौका था। मुझे लगता है कि बहुत स्पष्ट है। इसका मतलब है कि 2/3 मौका था कि अन्य दरवाजों में से एक विजेता है। यदि मेजबान खेल उसे अतिरिक्त जानकारी दिए बिना स्विच करने का अवसर देता है, तो कोई लाभ नहीं होगा। फिर, यह स्पष्ट होना चाहिए। लेकिन इसे देखने का एक तरीका यह है कि 2/3 मौका है कि वह स्विच करके जीत जाएगा। लेकिन उसके पास 2 विकल्प हैं। तो हर एक को केवल 2/3 को 2 = 1/3 से विभाजित किया जाता है जो विजेता होने का मौका देता है, जो कि उसके मूल पिक से बेहतर नहीं है। बेशक हम पहले से ही अंतिम परिणाम जानते थे, यह सिर्फ एक अलग तरीके से गणना करता है।

लेकिन अब मेजबान को पता चलता है कि उन दो विकल्पों में से एक विजेता नहीं है। 2/3 में से एक मौका है कि वह जो दरवाजा नहीं उठाता वह विजेता है, वह अब जानता है कि 2 में से 1 विकल्प यह नहीं है। दूसरा हो भी सकता है और नहीं भी। इसलिए उसे अब 2/3 से विभाजित नहीं किया गया है। उसके पास खुले दरवाजे के लिए शून्य और बंद दरवाजे के लिए 2/3 है।


बहुत अच्छी उपमाएँ! मुझे लगता है कि यह एक बहुत अच्छा सादा अंग्रेजी विवरण है, और कई अन्य लोगों के विपरीत, आपने वास्तव में मेरे सवाल का जवाब दिया :)
ट्रूफ़

@Trufa @Jay घटनाओं और यादृच्छिकता के संभावित पूर्व-ज्ञान के बीच भ्रम बहुत आम है। एक दिलचस्प समस्या को हल करने वाली एक महिला के बारे में आपसे यह रोचक कहानी साझा करता हूं, जिन्होंने अकादमी में कुछ बेहतर गणितज्ञों के लिए शर्म की बात है। उन्होंने बाद में पछतावा करने के लिए कई बातें कही (जैसे कि "आपने गलती की, लेकिन सकारात्मक पक्ष देखें। यदि उन सभी पीएचडी गलत थे, तो देश कुछ गंभीर संकट में होगा।")। तो यहाँ कहानी है, आपके विचारों से संबंधित है ... आनंद लें! marilynvossavant.com/articles/gameshow.html
डॉ। बेलिसरियस

@ सबिसरियस यीप। मैं कहता हूं लाठी 21 :) बस मजाक कर रहा हूं मैं तुम्हें इशारा करता हूं!
ट्रूफा

@ बीबिसारियस बीटीडब्ल्यू कभी नहीं मिला कि मैं इसे एक और कोशिश करूँगा!
ट्रूफा

@ ट्राफा और यहाँ मर्लिन के कथन query.nytimes.com/gst/… (VERY VERY fun) की अकादमिक प्रतिक्रिया दर्शाने वाला एक लेख है
डॉ। बेलिसरियस

11

विचार करें कि आपके पास एक साधारण सिक्का फ्लिप समस्या है, जहां सिर भी माना जाता है और विषम पूंछ माना जाता है। तार्किक कार्यान्वयन है:

rand() mod 2

बड़े पर्याप्त वितरण पर, सम संख्याओं की संख्या विषम संख्याओं की संख्या के बराबर होनी चाहिए।

अब एक मामूली ट्विस्ट पर विचार करें:

rand() * rand() mod 2

यदि परिणामों में से एक भी है, तो संपूर्ण परिणाम भी होना चाहिए। 4 संभावित परिणामों पर विचार करें (यहां तक ​​कि * सम = भी, * विषम = सम, विषम * सम = भी, विषम * विषम = विषम)। अब, एक बड़े पर्याप्त वितरण पर, उत्तर का 75% समय होना चाहिए।

अगर मैं तुम होते तो मैं सिर पीटता।

यह टिप्पणी वास्तव में इस बात की अधिक व्याख्या है कि आप यादृच्छिकता के गणितीय गुणों पर चर्चा की तुलना में अपने तरीके के आधार पर एक कस्टम यादृच्छिक फ़ंक्शन क्यों लागू नहीं कर सकते हैं।


1
सावधान रहें! rand()%2बहुत यादृच्छिक नहीं हो सकता है; यह वास्तव में कम बिट की यादृच्छिकता पर निर्भर करता है, और कुछ PRNG इस तरह से बहुत अच्छे नहीं हैं। (बेशक, कुछ भाषाओं में आपको एक फ्लोटिंग-पॉइंट रिजल्ट मिलता है, rand()ताकि आप इसे इस तरह से पूरा न कर सकें ...)
डोनल फेलो

10

जब आपके यादृच्छिक संख्याओं के संयोजन का क्या होगा, इसके बारे में संदेह में, आप सांख्यिकीय सिद्धांत में सीखे गए पाठों का उपयोग कर सकते हैं।

ओपी की स्थिति में वह जानना चाहता है कि X * X = X ^ 2 का परिणाम क्या है जहां X यूनिफ़ॉर्म [0,1] के साथ एक यादृच्छिक चर वितरित किया गया है। हम सीडीएफ तकनीक का उपयोग करेंगे क्योंकि यह केवल एक-से-एक मैपिंग है।

X ~ यूनिफ़ॉर्म [0,1] के बाद से यह cdf है: f X (x) = 1 हम परिवर्तन चाहते हैं Y <- X ^ 2 इस प्रकार y = x ^ 2 व्युत्क्रम ज्ञात करें x (y): sqrt (y) = x यह हमें y के एक कार्य के रूप में x देता है। अगला, व्युत्पन्न dx / डाई खोजें: d / dy (sqrt (y)) = 1 / (2 sqrt (y))

Y का वितरण इस प्रकार दिया गया है: f Y (y) = f X (x (y)) | dx / dy = 1 / (2 sqrt (y))

हम अभी तक नहीं हुए हैं, हमें 0 <= x <1, 0 <= x ^ 2 <1 के बाद से Y का डोमेन प्राप्त करना है, इसलिए Y रेंज [0, 1) में है। यदि आप जांचना चाहते हैं कि क्या Y का PDF वास्तव में एक pdf है, तो इसे डोमेन पर एकीकृत करें : 0 से 1 तक 1 / (2 sqrt (y)) को एकीकृत करें और वास्तव में, यह 1. के रूप में पॉप अप करता है। उक्त फ़ंक्शन ऐसा लगता है जैसे कि क्या पोस्ट किया गया है।

X 1 + X 2 + ... + X n , (जहाँ X i) जैसी चीज़ों के लिए ~ यूनिफ़ॉर्म [0,1]) हम केवल केंद्रीय सीमा प्रमेय के लिए अपील कर सकते हैं, जो किसी भी वितरण के लिए काम करता है, जिसके क्षण मौजूद हैं। यही कारण है कि जेड-टेस्ट वास्तव में मौजूद है।

परिणामी पीडीएफ को निर्धारित करने की अन्य तकनीकों में जेकोबियन परिवर्तन (जो कि cdf तकनीक का सामान्यीकृत संस्करण है) और MGF तकनीक शामिल हैं।

संपादित करें: स्पष्टीकरण के रूप में, ध्यान दें कि मैं परिणामी परिवर्तन के वितरण के बारे में बात कर रहा हूं और इसकी यादृच्छिकता नहीं । यह वास्तव में एक अलग चर्चा के लिए है। इसके अलावा जो मैं वास्तव में प्राप्त किया गया था वह (रैंड ()) ^ 2 था। रैंड () * रैंड () के लिए यह बहुत अधिक जटिल है, जो किसी भी मामले में किसी भी प्रकार के समान वितरण का परिणाम नहीं होगा।


9

यह बिल्कुल स्पष्ट नहीं है, लेकिन rand()आमतौर पर की तुलना में अधिक यादृच्छिक है rand()*rand()। यह महत्वपूर्ण है कि यह वास्तव में अधिकांश उपयोगों के लिए बहुत महत्वपूर्ण नहीं है।

लेकिन सबसे पहले, वे अलग-अलग वितरण का उत्पादन करते हैं। यह कोई समस्या नहीं है यदि आप चाहते हैं, लेकिन यह कोई फर्क नहीं पड़ता। यदि आपको किसी विशेष वितरण की आवश्यकता है, तो संपूर्ण "जो अधिक यादृच्छिक है" प्रश्न को अनदेखा करें। तो rand()अधिक यादृच्छिक क्यों है ?

क्यों का मूल rand()अधिक यादृच्छिक है (इस धारणा के तहत कि यह रेंज के साथ फ्लोटिंग-पॉइंट रैंडम नंबर का उत्पादन कर रहा है [0..1], जो बहुत ही सामान्य है) यह है कि जब आप दो एफपी संख्याओं को एक साथ कई सूचनाओं के साथ गुणा करते हैं, तो आपको मिलता है अंत से सूचना के कुछ नुकसान; आईईईई डबल-सटीक फ्लोट में बस इतना ही पर्याप्त नहीं है कि दो आईईईई डबल-सटीक फ्लोट में समान रूप से बेतरतीब ढंग से [0..1] से चुने गए सभी सूचनाओं को रखने के लिए, और उन अतिरिक्त बिट्स की जानकारी खो जाती है। बेशक, इससे कोई फर्क नहीं पड़ता कि आप (शायद) उस जानकारी का उपयोग करने वाले नहीं थे, लेकिन नुकसान वास्तविक है। यह भी वास्तव में कोई फर्क नहीं पड़ता कि आप किस वितरण का उत्पादन करते हैं (यानी, जो ऑपरेशन आप संयोजन करने के लिए उपयोग करते हैं)। उन यादृच्छिक संख्याओं में से प्रत्येक में (सबसे अच्छे रूप में) यादृच्छिक जानकारी के 52 बिट्स हैं - जो '

रैंडम नंबरों के अधिकांश उपयोग रैंडम स्रोत में वास्तव में उपलब्ध के रूप में बहुत यादृच्छिकता के करीब भी उपयोग नहीं करते हैं। एक अच्छा PRNG प्राप्त करें और इसके बारे में बहुत ज्यादा चिंता न करें। ("अच्छाई" का स्तर इस बात पर निर्भर करता है कि आप इसके साथ क्या कर रहे हैं? मोंटे कार्लो सिमुलेशन या क्रिप्टोग्राफी करते समय आपको सावधान रहना होगा, लेकिन अन्यथा आप शायद मानक PRNG का उपयोग कर सकते हैं क्योंकि यह आमतौर पर बहुत तेज है।)


1
यह उत्तर वास्तव में बेलिसियस के शानदार के साथ संयोजन के रूप में पढ़ा जाना चाहिए; वे समस्या के विभिन्न पहलुओं को कवर करते हैं।
डोनाल्ड फेलो

7

फ्लोटिंग रंडोम सामान्य रूप से, एक एल्गोरिथ्म पर आधारित होते हैं, जो शून्य और एक निश्चित सीमा के बीच पूर्णांक बनाता है। जैसे, रैंड () * रैंड () का उपयोग करके, आप अनिवार्य रूप से int_rand () * int_rand () / rand_max ^ 2 कह रहे हैं - जिसका अर्थ है कि आप किसी भी प्राइम नंबर / रैंड_मैक्स को छोड़कर: 2।

यह यादृच्छिक वितरण को महत्वपूर्ण रूप से बदलता है।

रैंड () समान रूप से अधिकांश प्रणालियों पर वितरित किया जाता है, और यदि सही तरीके से बीज बोया जाता है, तो भविष्यवाणी करना मुश्किल है। इसका उपयोग तब तक करें जब तक कि आपके पास इस पर गणित करने का कोई विशेष कारण न हो (यानी, वितरण को आवश्यक वक्र के रूप में आकार देना)।


@ अविश्वास: यह केवल मामला है अगर 1 यादृच्छिक प्रक्रिया का एक संभावित परिणाम है।
जॉरिस मेस

इससे पहले कि मुझे यह पता चले, मुझे जवाबों को लंबा पढ़ना होगा। आप एक स्पष्ट समस्या बताते हैं: परिणाम स्थान (संभावित मूल्यों की संख्या) के rand()*rand()परिणाम स्थान से छोटा है rand()- क्योंकि यह प्रमुख संख्याओं को बाहर करता है। मेरा वोट हो जाता है ...
फ्लोरिस

7

गुणा करने की संख्या आपके कंप्यूटर आर्किटेक्चर के आधार पर एक छोटे समाधान रेंज में समाप्त हो जाएगी।

यदि आपके कंप्यूटर का प्रदर्शन दिखाता है कि 16 अंक rand()कहेंगे 0.1234567890123 एक गुणा, 0.1234567890123 से गुणा किया जाता है rand(), तो 0.0152415 कुछ देगा जिससे आप निश्चित रूप से कम समाधान पाएंगे यदि आप प्रयोग 10 ^ 14 बार दोहराएंगे।


3

इनमें से अधिकांश वितरण इसलिए होते हैं क्योंकि आपको यादृच्छिक संख्या को सीमित या सामान्य करना होता है।

हम इसे सभी सकारात्मक होने के लिए सामान्य करते हैं, एक सीमा के भीतर फिट होते हैं, और यहां तक ​​कि असाइन किए गए चर प्रकार के लिए स्मृति आकार की बाधाओं के भीतर फिट होने के लिए।

दूसरे शब्दों में, क्योंकि हमें 0 और X के बीच रैंडम कॉल को सीमित करना है (एक्स हमारे वेरिएबल की आकार सीमा है) हमारे पास 0 और एक्स के बीच "यादृच्छिक" संख्याओं का एक समूह होगा।

अब जब आप यादृच्छिक संख्या को किसी अन्य यादृच्छिक संख्या में जोड़ते हैं, तो योग 0 और 2X के बीच कहीं होगा ... यह मान को किनारे बिंदुओं से दूर कर देगा (दो छोटी संख्याओं को एक साथ जोड़ने की संभावना और दो बड़ी संख्याओं को एक साथ जोड़ना बहुत छोटा है जब आपके पास एक बड़ी सीमा पर दो यादृच्छिक संख्याएं हैं)।

उस मामले के बारे में सोचें जहां आपके पास एक संख्या है जो शून्य के करीब है और आप इसे दूसरे यादृच्छिक संख्या के साथ जोड़ते हैं यह निश्चित रूप से बड़ा और 0 से दूर हो जाएगा (यह बड़ी संख्या का सच होगा और साथ ही साथ दो बड़ी संख्या होने की संभावना नहीं है (X के करीब संख्या) रैंडम फ़ंक्शन द्वारा दो बार लौटाया गया।

अब यदि आप यादृच्छिक संख्याओं को ऋणात्मक संख्याओं और धनात्मक संख्याओं (शून्य अक्ष पर समान रूप से फैलाते हुए) के साथ सेटअप करते हैं, तो अब ऐसा नहीं होगा।

उदाहरण के लिए कहें, RandomReal({-x, x}, 50000, .01)तो आपको नकारात्मक पक्ष पर संख्याओं का समान वितरण मिलेगा और यदि आप यादृच्छिक संख्याओं को एक साथ जोड़ना चाहते हैं तो वे अपनी "यादृच्छिकता" बनाए रखेंगे।

अब मुझे यकीन नहीं है कि Random() * Random()नकारात्मक के साथ सकारात्मक अवधि के साथ क्या होगा ... यह देखने के लिए एक दिलचस्प ग्राफ होगा ... लेकिन मुझे अब लेखन कोड पर वापस जाना होगा। :-P


2
  1. अधिक यादृच्छिक जैसी कोई चीज नहीं है । यह या तो यादृच्छिक है या नहीं। यादृच्छिक का अर्थ है "भविष्यवाणी करना कठिन"। इसका अर्थ गैर-नियतात्मक नहीं है। दोनों यादृच्छिक () और यादृच्छिक () * यादृच्छिक () समान रूप से यादृच्छिक हैं यदि यादृच्छिक () यादृच्छिक है। जहां तक ​​यादृच्छिकता जाती है वितरण वितरण अप्रासंगिक है। यदि गैर-समान वितरण होता है, तो इसका मतलब है कि कुछ मूल्य दूसरों की तुलना में अधिक होने की संभावना है; वे अभी भी अप्रत्याशित हैं।

  2. चूंकि छद्म यादृच्छिकता शामिल है, संख्या बहुत अधिक निर्धारक है। हालांकि, संभावना मॉडल और सिमुलेशन में छद्म यादृच्छिकता अक्सर पर्याप्त होती है। यह अच्छी तरह से ज्ञात है कि छद्म यादृच्छिक संख्या जनरेटर को जटिल बनाना केवल विश्लेषण करना मुश्किल बनाता है। यह यादृच्छिकता में सुधार की संभावना नहीं है; यह अक्सर सांख्यिकीय परीक्षणों को विफल करने का कारण बनता है।

  3. यादृच्छिक संख्याओं के वांछित गुण महत्वपूर्ण हैं: पुनरावृत्ति और प्रतिलिपि प्रस्तुत करने योग्यता, सांख्यिकीय यादृच्छिकता, (आमतौर पर) समान रूप से वितरित की जाती है, और एक बड़ी अवधि कुछ होती है।

  4. यादृच्छिक संख्याओं के संबंध में रूपांतरण: जैसा कि किसी ने कहा, सामान्य वितरण में दो या अधिक समान रूप से वितरित परिणामों का योग। यह योजक केंद्रीय सीमा प्रमेय है। यह स्रोत वितरण की परवाह किए बिना लागू होता है जब तक सभी वितरण स्वतंत्र और समान होते हैं। गुणककेंद्रीय सीमा प्रमेय कहती है कि दो या दो से अधिक स्वतंत्र और अप्रत्यक्ष रूप से वितरित यादृच्छिक चर का उत्पाद तार्किक है। किसी और द्वारा बनाया गया ग्राफ घातीय दिखता है, लेकिन यह वास्तव में असामान्य है। इसलिए यादृच्छिक () * यादृच्छिक () तार्किक रूप से वितरित किया जाता है (हालांकि यह स्वतंत्र नहीं हो सकता है क्योंकि संख्या एक ही धारा से खींची जाती है)। यह कुछ अनुप्रयोगों में वांछनीय हो सकता है। हालांकि, आमतौर पर एक यादृच्छिक संख्या उत्पन्न करना और इसे एक तार्किक-वितरित संख्या में बदलना बेहतर होता है। यादृच्छिक () * यादृच्छिक () का विश्लेषण करना मुश्किल हो सकता है।

अधिक जानकारी के लिए, मेरी किताब www.performorama.org पर देखें। पुस्तक निर्माणाधीन है, लेकिन संबंधित सामग्री वहां है। ध्यान दें कि अध्याय और अनुभाग संख्या समय के साथ बदल सकते हैं। अध्याय 8 (संभावना सिद्धांत) - खंड 8.3.1 और 8.3.3, अध्याय 10 (यादृच्छिक संख्या)।


1

हम Kolmogorov जटिलता का उपयोग करके यादृच्छिकता के बारे में संख्याओं के दो सरणियों की तुलना कर सकते हैं। यदि संख्याओं का क्रम संकुचित नहीं किया जा सकता है, तो यह सबसे यादृच्छिक है हम इस लंबाई तक पहुंच सकते हैं ... मुझे पता है कि इस प्रकार का माप अधिक सैद्धांतिक है विकल्प ...


1

वास्तव में, जब आप इसके बारे में सोचते हैं तो rand() * rand()इसकी तुलना में कम यादृच्छिकता होती है rand()। यहाँ पर क्यों।

अनिवार्य रूप से, सम संख्याओं के समान विषम संख्याएँ हैं। और यह कहते हुए कि 0.04325 विषम है, और जैसे 0.388 सम है, और 0.4 सम है, और 0.15 विषम है,

इसका मतलब है कि rand()एक समान या विषम दशमलव होने की समान संभावना है

दूसरी ओर, rand() * rand()क्या यह बाधाओं को थोड़ा अलग तरीके से स्टैक किया गया है। हम कहते हैं:

double a = rand();
double b = rand();
double c = a * b;

aऔर bदोनों के पास 50% प्रीसेंट होने का मौका है। यह जानते हुए

  • सम * भी = भी
  • सम * विषम = सम
  • विषम * विषम = विषम
  • विषम * सम = भी

इसका मतलब यह है कि 75% संभावना है कि cयह भी है, जबकि केवल 25% संभावना विषम rand() * rand()है rand(), इसलिए कम पूर्वानुमान की तुलना में अधिक अनुमानित है ।


rand()आमतौर पर 0 और 1 के बीच एक नंबर देता है। क्या इसके बारे में बात करना भी अजीब है या अजीब है?
तेईपेम्म

1
वास्तव में 0.2*0.2=0.04, जो इस दृष्टिकोण के साथ एक मूलभूत दोष का सुझाव देता है: दो डबल्स के 53 बिट्स को गुणा करना परिणाम में लगभग 100 बिट्स देगा। लेकिन इन बिट्स के अंतिम आधे को छोड़ दिया जाएगा। इसलिए जब आप 1 के साथ दो डबल्स लेते हैं तो कम से कम महत्वपूर्ण बिट के रूप में, आप उनके उत्पाद के कम से कम महत्वपूर्ण बिट के बारे में कुछ नहीं कह सकते हैं।
तीपेमम्म

या, इसे किसी अन्य तरीके से रखने के लिए, आपने मान लिया है कि "सम" और "विषम" rand()की परिभाषा जो वितरण के लिए समझ में आती है, "समान" और "विषम" की परिभाषाओं के समान है जो वितरण के लिए समझ में आता है का है rand()*rand()। यदि ऐसा नहीं है, तो यह तर्क विफल हो जाता है। यह पूर्णांकों के लिए सही है, लेकिन ये पूर्णांक नहीं हैं।
डेविड स्कवार्ट्ज

0

एक रैखिक प्रतिक्रिया पारी रजिस्टर (LFSR) का उपयोग करें जो एक आदिम बहुपद को लागू करता है।

परिणाम 2 ^ n छद्म यादृच्छिक संख्याओं का एक क्रम होगा, अर्थात् कोई भी उस क्रम में दोहराता नहीं है जहां n LFSR में बिट्स की संख्या है .... जिसके परिणामस्वरूप एक समान वितरण होता है।

http://en.wikipedia.org/wiki/Linear_feedback_shift_register http://www.xilinx.com/support/documentation/application_notes/xapp052.pdf

आपके कंप्यूटर घड़ी के माइक्रोसेकस पर आधारित "यादृच्छिक" बीज का उपयोग करें या शायद आपके फ़ाइल सिस्टम में कुछ लगातार बदलते डेटा पर md5 परिणाम का एक सबसेट।

उदाहरण के लिए, एक 32-बिट LFSR एक दिए गए बीज से शुरू होने वाले क्रम में 2 ^ 32 अद्वितीय संख्या (कोई 2 समान) उत्पन्न करेगा। अनुक्रम हमेशा एक ही क्रम में होगा, लेकिन एक अलग बीज के लिए प्रारंभिक बिंदु अलग (स्पष्ट रूप से) होगा। इसलिए, यदि संभवत: सीडिंग के बीच दोहराए जाने वाला क्रम कोई समस्या नहीं है, तो यह एक अच्छा विकल्प हो सकता है।

मैंने 128-बिट LFSR का उपयोग एक ऐसे बीज का उपयोग करके हार्डवेयर सिमुलेटर में यादृच्छिक परीक्षण उत्पन्न करने के लिए किया है जो लगातार बदलते सिस्टम डेटा पर md5 परिणाम है।


0

यह मानते हुए कि इसके rand()बीच एक संख्या लौटाती है, [0, 1)यह स्पष्ट है कि rand() * rand()यह 0. के प्रति पक्षपाती होगा क्योंकि इसके xबीच की संख्या को गुणा करने से [0, 1)संख्या छोटी हो जाएगी x। यहाँ 10000 और अधिक यादृच्छिक संख्याओं का वितरण है :

यदि आप के rand()बीच पूर्णांक देता है, [x, y]तो आपके पास निम्नलिखित वितरण है। विषम बनाम सम मानों की संख्या पर ध्यान दें:


-1

ठीक है, इसलिए मैं यह कहकर कुछ मूल्य जोड़ने की कोशिश करूंगा कि दूसरों के उत्तरों को पूरक करने के लिए आप एक यादृच्छिक संख्या जनरेटर का निर्माण और उपयोग कर रहे हैं।

रैंडम नंबर जनरेटर वे डिवाइस होते हैं (बहुत सामान्य अर्थ में) जिनमें कई विशेषताएं होती हैं जिन्हें एक उद्देश्य के लिए संशोधित किया जा सकता है। उनमें से कुछ (मुझसे) हैं:

  • एन्ट्रॉपी: शैनन एंट्रोपी में
  • वितरण: सांख्यिकीय वितरण (पॉसन, सामान्य, आदि)
  • प्रकार: संख्याओं का स्रोत क्या है (एल्गोरिथ्म, प्राकृतिक घटना, का संयोजन, आदि) और एल्गोरिथ्म लागू।
  • दक्षता: रैपिडिटी या निष्पादन की जटिलता।
  • पैटर्न: आवधिकता, अनुक्रम, रन, आदि।
  • और शायद अधिक ...

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


-1

यह दिखाना आसान है कि दो यादृच्छिक संख्याओं का योग जरूरी यादृच्छिक नहीं है। कल्पना कीजिए कि आपके पास 6 पक्षीय मर और रोल है। प्रत्येक संख्या में प्रदर्शित होने का 1/6 मौका है। अब कहते हैं कि आपके पास 2 पासा थे और परिणाम को अभिव्यक्त किया। उन राशियों का वितरण 1/12 नहीं है। क्यों? क्योंकि कुछ संख्या अन्य की तुलना में अधिक दिखाई देती हैं। कई विभाजन हैं हैं। उदाहरण के लिए संख्या 2 केवल 1 + 1 का योग है, लेकिन 7 का गठन 3 + 4 या 4 + 3 या 5 + 2 आदि के द्वारा किया जा सकता है ... इसलिए इसमें ऊपर आने का एक बड़ा मौका है।

इसलिए, एक परिवर्तन को लागू करने, इस मामले में एक यादृच्छिक फ़ंक्शन के अलावा यह अधिक यादृच्छिक नहीं बनाता है, या जरूरी यादृच्छिकता को संरक्षित करता है। ऊपर दिए गए पासा के मामले में, वितरण को 7 पर तिरछा किया जाता है और इसलिए कम यादृच्छिक होता है।


-1

जैसा कि अन्य लोग पहले ही बता चुके हैं, इस सवाल का जवाब देना मुश्किल है क्योंकि हम में से हर किसी के सिर में बेतरतीबी की अपनी तस्वीर है

इसीलिए, मैं आपको अत्यधिक समय देने के लिए और इस साइट के माध्यम से पढ़ने के लिए यादृच्छिकता का एक बेहतर विचार प्राप्त करने के लिए अत्यधिक सलाह दूंगा:

असली सवाल पर वापस जाने के लिए। इस शब्द में अधिक या कम यादृच्छिक नहीं है:

दोनों ही यादृच्छिक प्रतीत होता है !

दोनों मामलों में - बस रैंड () या रैंड () * रैंड () - स्थिति समान है: कुछ अरब संख्याओं के बाद अनुक्रम दोहराएगा (!) । यह पर्यवेक्षक के लिए यादृच्छिक प्रतीत होता है , क्योंकि वह पूरे अनुक्रम को नहीं जानता है, लेकिन कंप्यूटर का कोई वास्तविक यादृच्छिक स्रोत नहीं है - इसलिए वह यादृच्छिकता भी उत्पन्न नहीं कर सकता है।

उदाहरण: क्या मौसम यादृच्छिक है? हमारे पास यह निर्धारित करने के लिए पर्याप्त सेंसर या ज्ञान नहीं है कि मौसम यादृच्छिक है या नहीं।


-2

इसका उत्तर यह निर्भर करता है, उम्मीद है कि रैंड () * रैंड () रैंड () की तुलना में अधिक यादृच्छिक होगा, लेकिन:

  • दोनों उत्तर आपके मूल्य के बिट आकार पर निर्भर करते हैं
  • कि ज्यादातर मामलों में आप एक छद्म यादृच्छिक एल्गोरिथ्म के आधार पर उत्पन्न करते हैं (जो कि ज्यादातर संख्या जनरेटर है जो आपके कंप्यूटर घड़ी पर निर्भर करता है, और इतना यादृच्छिक नहीं)।
  • अपने कोड को और अधिक पठनीय बनाएं (और इस तरह के मंत्र के साथ यादृच्छिक के कुछ यादृच्छिक वूडू देवता का आह्वान न करें)।

ठीक है, यदि आप इन उपरोक्त में से किसी की भी जांच करते हैं, तो मेरा सुझाव है कि आप सरल "रैंड ()" के लिए जाएं। क्योंकि आपका कोड अधिक पठनीय होगा (अपने आप से यह न पूछें कि आपने यह क्यों लिखा है, इसके लिए ... अच्छी तरह से ... 2 सेकंड से अधिक), बनाए रखने के लिए आसान (यदि आप एक सुपर_रैंड के साथ रैंड फ़ंक्शन को बदलना चाहते हैं)।

यदि आप एक बेहतर यादृच्छिक चाहते हैं, तो मैं आपको इसे किसी भी स्रोत से प्रवाहित करने की सलाह दूंगा जो पर्याप्त शोर ( रेडियो स्थिर ) प्रदान करता है , और फिर एक सरल rand()पर्याप्त होना चाहिए।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.