क्या यह पूर्वाग्रह को यादृच्छिक संख्याओं से परिचित कराएगा?


11

बेतरतीब ढंग से उत्पन्न 80+ मिलियन और शून्य के साथ एक डेटा फ़ाइल मान लें।

इस फ़ाइल से, हम यादृच्छिक दशमलव पूर्णांक की एक सूची बनाना चाहते हैं।

यह रूपांतरण करने की योजना है।

  1. 80 मिलियन अंकों को 4 बाइनरी अंकों के समूह में विभाजित करें।
  2. प्रत्येक 4-अंकीय बाइनरी को दशमलव में बदलें।
  3. 9 से अधिक सभी दशमलव मानों को छोड़ दें।

यह 0-9 से यादृच्छिक पूर्णांक की एक स्ट्रिंग में परिणाम होना चाहिए

यहाँ चिंता है। 24 बाइनरी अंकों में 4 बाइनरी अंकों के 6 समूह शामिल होते हैं जो 10 से 15 के मानों के अनुरूप होते हैं जिनमें 17 होते हैं और केवल 7 शून्य होते हैं। क्या यह असंतुलन विषम बनाम पूर्णांक के वितरण को प्रभावित करेगा, या किसी भी तरह से दशमलव अंकों के अंतिम तार की यादृच्छिकता से समझौता करेगा?

अद्यतन: पोस्ट किए गए उत्तरों से, ऐसा लगता है कि ऊपर वर्णित विधि ध्वनि है। मैं उस निष्कर्ष से सहमत हूं। हालांकि, मुझे अभी भी समझ में नहीं आया है कि द्विआधारी स्ट्रिंग से शून्य के रूप में दो से अधिक को हटाने से विषम संख्याओं की ओर परिणाम का पूर्वाग्रह नहीं होता है। मैं स्पष्टीकरण मांगता हूं।


9
अधिक कुशल तरीके हैं। उदाहरण के लिए, आप 10 के समूहों में बिट स्ट्रिंग को विभाजित कर सकते हैं, उन्हें उनके तीन अंकों के प्रतिनिधित्व आधार 10 में परिवर्तित कर सकते हैं, और 1000 या उससे अधिक मानों के साथ किसी भी को त्याग सकते हैं। यह केवल 62.5% के बजाय 97.6% बिट्स का उपयोग करेगा। आप इससे बेहतर नहीं कर सकते। (आप 681 के समूहों का उपयोग कर सकते हैं और उन्हें 205-अंकों के बेस -10 स्ट्रिंग्स में बदल सकते हैं, जिससे लगभग 99.7 बिट्स का उपयोग हो सकता है।)
व्ह्यूबर

जवाबों:


18

आइए गिनते हैं और देखते हैं। फ़ाइल के निर्माण से, सभी 4-बिट तार समान रूप से होने की संभावना है। ऐसे 16 तार हैं। वे यहाँ हैं:

 0. 0000
 1. 0001
 2. 0010
 3. 0011
 4. 0100
 5. 0101
 6. 0110
 7. 0111
 8. 1000
 9. 1001
10. 1010
11. 1011
12. 1100
13. 1101
14. 1110
15. 1111

आपकी प्रक्रिया 15. के माध्यम से 10 तार बाहर फेंकती है। इसलिए उन मामलों में जो आप वास्तव में उपयोग करते हैं, आप 9 में से 0 का चयन करेंगे, जिनमें से प्रत्येक समान रूप से वांछित है। और हम जानते हैं कि उत्पन्न दशमलव अंक एक दूसरे से स्वतंत्र हैं क्योंकि प्रत्येक 4 बिट्स की एक अलग स्ट्रिंग का उपयोग करता है और सभी बिट्स स्वतंत्र हैं। आपकी प्रक्रिया एक साधारण प्रकार का अस्वीकृति नमूना है


5
मुझे वह तर्क साफ दिखता है। फिर भी मुझे चिंता है कि मैं 0 से अधिक बाइनरी 1 को छोड़ रहा हूं। उस असंतुलन का कोई असर क्यों नहीं होता?
जोएल डब्ल्यू।

5
@JoelW मुझे लगता है कि मुझे आपका तर्क दिखाई नहीं दे रहा है। अंतिम वितरण दशमलव अंकों की चिंता करता है, बिट्स की नहीं, इसलिए बिट्स का वितरण अप्रासंगिक है।
कोडियालॉजिस्ट

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

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

1
@ शुभंकर मेला पर्याप्त; जोड़ा।
कोडिएलॉजिस्ट

4

कोई पूर्वाग्रह नहीं है क्योंकि आप केवल कुछ मूल्यों का अनुकरण करते हैं जिन्हें त्याग दिया जाता है और उन सभी मूल्यों को शामिल किया जाता है जिन्हें एक ही संभावना के साथ उत्पन्न किया जाता है: यहाँ छवि विवरण दर्ज करें

उपरोक्त ग्राफ के लिए R कोड है

generza=matrix(sample(0:1,4*1e6,rep=TRUE),ncol=4)
uniz=generza[,1]+2*generza[,2]+4*generza[,3]+8*generza[,4]
barplot(hist(uniz[uniz<10],breaks=seq(-0.5,9.5,le=11))$counts,col="steelblue")
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.