कैसे मरने के लिए एक उचित सिक्का दिया


21

मान लीजिए कि आपको एक उचित सिक्का दिया गया है और आप बार-बार निष्पक्ष (छह-पक्षीय) मरने की संभावना वितरण का अनुकरण करना चाहेंगे। मेरा प्रारंभिक विचार यह है कि हमें उपयुक्त पूर्णांक , को चुनने की आवश्यकता है , जैसे कि । तो सिक्का flipping के बाद बार, हम सीमा को विभाजित करके नंबर k-लंबाई मरने के आउटपुट को bitstring द्वारा इनकोडिंग नक्शा 6 में अंतराल लंबाई में से प्रत्येक के । हालाँकि, यह संभव नहीं है, क्योंकि के दो ही प्रमुख कारक हैं, लेकिन के प्रमुख कारकों में तीन शामिल हैं। ऐसा करने का कोई और सरल तरीका होना चाहिए, है ना?2 k = 6 m k [ 0 , 2 k - 1 ] m 2 k 6 m,2=6[0,2-1]26


इस सवाल को देखें जहां इस मुद्दे से अधिक सामान्य तरीके से निपटा गया है।
राफेल

यहाँ इस विषय पर एक लेख है । यह बताता है कि अस्वीकृति नमूने का उपयोग कैसे करें और आगे के रोल को गति देने के लिए "व्यर्थ" बिट्स का पुन: उपयोग कैसे करें।
ZeroUltimax

जवाबों:


12

@FrankW द्वारा बताए गए की तुलना में थोड़ा अधिक कुशल तरीका है, लेकिन एक ही विचार का उपयोग करके, आप 2 एन से नीचे की संख्या प्राप्त करने के लिए अपना सिक्का पलटा सकते हैं । फिर इसे मी डाई फ्लिप्स के एक बैच के रूप में व्याख्या करें , जहां मी सबसे बड़ी संख्या है ताकि 6 मीटर < 2 एन (जैसा कि पहले ही कहा गया है, समानता यहां कभी नहीं रखती है)। यदि आपको 6 मी से अधिक या बराबर संख्या मिलती है, तो आपको मूल्य को अस्वीकार करना होगा और सभी एन फ्लैप को दोहराना होगा ।n2nmm6m<2n6mn

आप एक फ़ंक्शन लागू कर सकते हैं जो सिक्का फ़्लिप करके एक एकल डाई फ्लिप लौटाता है और फिर निम्नलिखित मी - 1 डाई फ्लिप अनुरोधों के लिए परिणाम को कैश करता है।nm1

दिलचस्प बात यह है कि कुछ मूल्य दूसरों की तुलना में बेहतर हैं क्योंकि उनके पास अस्वीकृति दर कम है। यहां अच्छे मूल्यों की सूची दी गई है (अर्थात ऐसे मूल्य जिन्हें पहले की तुलना में अस्वीकृति दर कम है):n

n m r
3 1 0.25
8 3 0.15625
13 5 0.05078125
44 17 0.0378308072686
75 29 0.0247036782182
106 41 0.0113974522704
243 94 0.00933096248381
380 147 0.00726015308463
517 200 0.00518501504347
654 253 0.00310553931213
791 306 0.00102171682348

सूत्रों के साथ प्राप्त किया:

m=nlog32r=13m2n

पहली पंक्ति 25% की अस्वीकार दर के साथ @FrankW के उत्तर से मेल खाती है। निम्नलिखित संख्याएँ अच्छी हैं: और n = 13 दोनों को एक ही पूर्णांक स्थैतिक चर में रखा जा सकता है। विशेष रूप से n = 13 की अस्वीकार दर केवल 5% है जो 25% के संबंध में एक समझदार सुधार है और यह संभावित कार्यान्वयन के लिए एक अच्छा उम्मीदवार बनाता है।n=8n=13n=13


आपको 6 ^ m, 6 * m की आवश्यकता नहीं है। तो आप केवल 5/16 मामलों को खारिज करते हुए 5 बिट संख्या का उपयोग कर सकते हैं।
तैमूर

13 tosses के लिए 5% की अस्वीकृति दर भयानक है, जब 3 tosses के लिए 25% की तुलना में। क्योंकि 3 टॉस के लिए 25% केवल 0.390625% मामलों में 4 बार (यानी 12 से अधिक टॉक्सिस खर्च) को अस्वीकार करेगा।
तैमूर

@ टायमर 5 बिट संख्या 32 विभिन्न मूल्यों का प्रतिनिधित्व कर सकती है जो आपको एक पासा का प्रतिनिधित्व करने की अनुमति देती है (क्योंकि दो चरणों में 36 संभावनाएं हैं)। तो केवल 6/32 मान 27/32 = 84% की अस्वीकार दर के साथ स्वीकार्य हैं
इमानुएल

@Taemyr: एक की दर अस्वीकार पर n उछालों का मतलब है कि, औसत में के हर बैच n उछालों संभावना के साथ खारिज कर दिया जाता है आर । तो, औसत में, प्रत्येक टॉस को उसी दर r ( n पर निर्भर नहीं ) के साथ खारिज कर दिया जाता है । आरnnआरआरn
Emanuele Paolini

हाँ। और फ्रैंकडब्ल्यू की विधि का उपयोग करके जिसमें 3 टॉस के एक बैच के लिए 25% का पुनर्जन्म दर है, आपके पास चौथे बैच की तुलना में बाद में स्वीकार करने के लिए 1-0.00390625 की संभावना होगी।
तैमूर

29

आप क्या कर सकते हैं, अस्वीकृति नमूनाकरण नामक एक विधि को नियोजित करना है :

  • सिक्के को 3 बार पलटें और प्रत्येक फ्लिप को एक बिट (0 या 1) के रूप में व्याख्या करें।
  • में एक बाइनरी नंबर देते हुए, 3 बिट्स को मिलाएं ।[0,7]
  • यदि संख्या , तो इसे डाई रोल के रूप में लें।[1,6]
  • अन्यथा, यदि परिणाम या 7 है , तो फ़्लिप दोहराएं।07

के बाद से संभावित परिणामों में से 8 प्रत्येक सेट में समाप्ति की ओर लेजाते हैं, एक मर रोल पाने के लिए flips केlसेटसे अधिक की आवश्यकता की संभावनाहै(1-668l । इसलिए, यह विधि व्यवहार में कुशल है।(168)l=14l

सुधार:

@ एंजेल का जवाब बताता है, कि प्रत्येक सेट में सिक्के की संख्या कम हो जाती है लेकिन अगले सेट के लिए पहले बिट के रूप में और 7 के बीच के अंतर का उपयोग करके पहले 3 से 2 तक घटाया जा सकता है ।07

@Emanuele Paolini बताती हैं, यदि आप एकाधिक डाई रोल की आवश्यकता है, तो आप रेरोल की संख्या कैसे कम कर सकते हैं।


क्या यह तरीका अधिक केंद्रीय प्रवृत्ति नहीं देगा जो एक सच्चा d6 होगा?
Red_Shadow

3
@Red_Shadow नहीं। ध्यान दें कि आप सिक्के को जोड़ते नहीं हैं (तीनों पर्याप्त नहीं होंगे, तो) लेकिन आप प्रत्येक बिट को -bit बाइनरी संख्या में सिक्का द्वारा चुनें। इस प्रकार, आप समान रूप से [ 0..2 k - 1 ] से नमूना लेते हैं और लक्ष्य अंतराल से संख्या को अस्वीकार नहीं करते हैं; यह केवल लक्ष्य अंतराल पर एक समान वितरण प्राप्त कर सकता है। [0..2-1]
राफेल

यदि आप अस्वीकृत श्रेणी के साथ चालाक हैं, तो इस मामले में वास्तव में यह आसान है कि अस्वीकृति के मामले में आवश्यक सिक्के की संख्या को कम करने के लिए उपयोग करें।
मूविंग डक

@MingDuck आप यह तय कर सकते हैं कि 2 टॉस के बाद अपना रिजल्ट छोड़ना है या नहीं: यदि यह 0,0 0,1 या 1,0 है तो फिर से अंतिम बिट के लिए फिर से टॉस करें अन्यथा शुरू करें
शाफ़्ट फ्रीक

1
@NikosM। संभावना लंबे समय तक लेने के लिए की तुलना में कदम,, तेजी से शून्य की ओर कम हो रही है, हालांकि तो जवाब नहीं गलत दावा करता है: यह है व्यवहार में कुशल, और वास्तव में व्यापक रूप से इस्तेमाल किया। (अधिक जटिल वितरण के लिए, यह अक्सर ही जाना जाता विधि है सब पर।।)
राफेल

7

रिजेक्शन सैंपलिंग का एक विकल्प (जैसा कि फ्रैंकवॉ के उत्तर में वर्णित है ) स्केलिंग एल्गोरिथ्म का उपयोग करना है, जो कि [7,8] के उत्तर को ध्यान में रखता है जैसे कि वह एक और सिक्का फड़फड़ा रहा हो।

Mathforum.org पर एक बहुत विस्तृत विवरण है , जिसमें एल्गोरिथ्म भी शामिल है (यह NextBit()आपके उचित सिक्के को पलट देगा)।

एक उचित सिक्के के साथ पासा फेंकने का मामला (नमूना 2 → 6) सामान्य एल्गोरिथ्म की तुलना में आसान है। आप बस एक और सिक्का इनपुट के रूप में विफलता (7 या 8) लेते हैं और दो और फ़्लिप करते हैं।


2

एक डीएम का उपयोग करते हुए एक डीएन के एक रोल को अनुकरण करने के लिए एक और दृष्टिकोण (एक डी 2 का उपयोग करके डी 6 पूछा गया विशिष्ट प्रश्न के मामले में) अंतराल को विभाजित करना है [0, 1) लंबाई के एन बराबर अंतराल 1 / एन, [0, में। 1 / एन), [1 / एन, 2 / एन), ..., [(एन -1) / एन, एन)।

बेस-एम अंश, 0.bbb ..., [0, 1 में) उत्पन्न करने के लिए dM का उपयोग करें। अगर वह [(i-1) / N, i / N) में आता है, तो मैं dN के रोल के रूप में लेता हूं। ध्यान दें कि आपको अंश का पर्याप्त आधार-एम अंक उत्पन्न करना है ताकि यह निर्धारित किया जा सके कि यह किस अंतराल में है।


समाप्ति की स्थिति को और अधिक सटीक बनाने की आवश्यकता है। यदि मैं एक बार सिक्के को फ्लिप करता हूं तो मैं बाइनरी अंश 0.0 या 0.1 (यानी both) के साथ समाप्त हो जाता हूं, दोनों एक अंतराल (क्रमशः 0 और 3 के लिए, इस मामले में) में आते हैं। आपको उत्पन्न अंश को एक सीमा के रूप में मानना ​​होगा और जब पूरी सीमा एक ही अंतराल के भीतर होती है तो आप रुक जाते हैं। मुझे यकीन है कि आप क्या चाहते हैं, लेकिन मुझे नहीं लगता कि यह स्पष्ट है।
रिंकी

1

सुधार अस्वीकृति के नमूने की संभवतः सरल व्याख्या।

मैं यह स्पष्टीकरण दे रहा हूं क्योंकि यह कुछ स्थितियों में संभावित संभावनाओं की समझ या विश्लेषण को सरल बनाने में मदद कर सकता है।

फ्रेंकडब्ल्यू ने अस्वीकृति के नमूने का उपयोग करने का सुझाव दिया , सिक्का को तीन बार फ़्लिप किया, अगर परिणाम सही सीमा में है, या सफलता मिलने तक तीन फ़्लिप को दोहराता है।

Ángel प्रत्येक परीक्षण पर एक फ्लिप को बचाने का सुझाव देता है, इसे तीन के पिछले सेट के दो अप्रयुक्त मूल्यों से शेष बाइनरी पसंद द्वारा प्रतिस्थापित किया जाता है।

इसका मतलब वास्तव में यह है कि पहले तीन फ़्लिप के साथ एक बिट जानकारी का उत्पादन किया गया था, जिसे उत्पादित करने की आवश्यकता नहीं थी। अधिक सटीक रूप से, आपको यह जानने के लिए केवल दो बार सिक्का फ्लिप करना चाहिए कि क्या फ़्लिप का वर्तमान सेट सफल होगा।

यह जानने के लिए कि क्या फ्लिप का वर्तमान सेट सफल होगा, केवल वही संभावना है जो मायने रखती है , क्योंकि फ्लिप के सफल सेट की व्याख्या करने की संभावना स्वतंत्र है। और यह उस सेट के लिए सभी फ़्लिप पूरा होने से पहले जाना जा सकता है

यह कम से कम दो तरीकों से प्राप्त किया जा सकता है, या फ़्लिप की दो अलग-अलग व्याख्याओं में अधिक सटीक रूप से। और भी हो सकते हैं।

जोड़े में परिणाम समूहन

टीटी, टीएच, एचटी कहते हैं कि विचार केवल तीन मूल्यों (1,2), (3,4) और (5,6) पर विचार करने के लिए है, जो किसी भी तीन डबल-फ्लिप कॉन्फ़िगरेशन द्वारा दर्शाए जाते हैं। फिर, आप डबल-फ़्लिप के साथ अस्वीकृति नमूनाकरण लागू कर सकते हैं, जब भी आप विफलता कॉन्फ़िगरेशन HH दोहराते हैं।

एक बार जब आप तीन सफल विन्यासों में से एक प्राप्त कर लेते हैं, तो आप बस सिक्के को एक बार फिर से तय करने के लिए फ्लिप करते हैं कि क्या आपको संबंधित जोड़ी का पहला या दूसरा मूल्य लेना चाहिए।

फ्लिप-सेट विफलता का शीघ्र पता लगाना

यह विचार तीन-फ्लिप कॉन्फ़िगरेशन के थोड़ा अलग पढ़ने का उपयोग करना है। यदि हेड और टेल की व्याख्या 1 और 0 के रूप में की जाती है, तो एक कॉन्फ़िगरेशन को द्विआधारी व्याख्या के साथ मेल खाना चाहिए। यह TTT (यानी 000) 1 से मेल खाती है, HTH (यानी 101) 6, HHT (यानी 110) और HHH (यानी 111) से मेल खाती है, 7 और 8 से मेल खाती है, या बाहर कुछ भी [1,6]।

तब हम जानते हैं कि फ्लिप-सेट केवल पहले दो फ़्लिप के साथ सफल या असफल हो रहा है। यदि वे HH का उत्पादन करते हैं, तो फ्लिप सेट अंतिम फ्लिप के स्वतंत्र रूप से विफल हो जाता है। तो इसे छोड़ दिया जा सकता है।

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

उदाहरण के लिए 10 चेहरों के पासे के लिए आपको सिद्धांत रूप से 4 फ़्लिप के एक फ्लिप सेट की आवश्यकता होती है, जिसमें 6 कॉन्फ़िगरेशन विफलता के अनुरूप होते हैं। निम्न प्रकार से द्विआधारी मूल्यों के अनुक्रम के उच्च अंत में सभी विफलता कॉन्फ़िगरेशन के लिए चाल है:

TTTT  0000   1
HTTT  1000   9
HTTH  1001  10
HTHT  1001  11
HTHH  1011  12
HHTT  1100  13
HHHH  1111  16

सफल विन्यास [१,१०] और [११,१६] को विफल करने के लिए सीमा के अनुरूप हैं।

तब आप असफल हो जाते हैं जब पहले दो फ़्लिप एचएच देते हैं, या जब पहले तीन एचटीएच देते हैं, तो सेट के लापता फ़्लिप का भी प्रयास किए बिना।

यदि आप असफल नहीं होते हैं, तो आप फ़्लिप के सेट को समाप्त कर देते हैं।


1

इसके लिए दो प्रसिद्ध दृष्टिकोण हैं। एक "अस्वीकृति नमूनाकरण" है। उदाहरण के लिए, दो अतिरिक्त नमूनों के लिए फिर से कोशिश करते हुए, छह में से एक मान लेने के लिए तीन बिट का उपयोग करें। या 256 में से 13 मामलों में फिर से कोशिश करके 1 से 6 (7776 संभावनाओं) से 5 मानों का चयन करने के लिए 14 बिट्स (8192 मान) का उपयोग करें।

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


0

अग्रिम में क्षमा करें यदि स्पष्टीकरण अतिश्योक्तिपूर्ण है। मुझे यकीन नहीं था कि इस अवधारणा को समझने या समझने में कितना आसान था।

कहते हैं कि आपके पास तीन सिक्के (उचित सिक्के) हैं। यदि आप प्रत्येक सिक्के के प्रत्येक पक्ष पर एक मान बढ़ाते हैं, तो आपके पास छह मूल्य होंगे।

जैसे: पहले सिक्के पर, सिर 1 और पूंछ 2 है। दूसरे सिक्के पर, सिर 3 और पूंछ 4 है। तीसरे सिक्के पर, सिर 5 है और पूंछ 6 है।

सिक्कों को लहराना आपको तीन नंबर के सेट के साथ छोड़ देगा, आपका वर्तमान सेट। अब, आपका वर्तमान सेट आपका पिछला सेट बन जाएगा और आप तीन नंबर का नया सेट प्राप्त करने के लिए प्रक्रिया को दोहराएंगे।

ऐसा तब तक करते रहें जब तक कि आपके करंट से लेकर पिछले सेट तक केवल एक नंबर मैच नहीं करता। वह आपका नंबर है।

इसलिए यदि आपको वर्तमान सेट के लिए [हेड, टेल, हेड] मिला है, तो यह [1, 4, 5] होगा। अब आप उन्हें फिर से फ्लिप करते हैं और आपका वर्तमान सेट [2, 4, 5] है। दो मैच। अच्छा नहीं। दुबारा कोशिश कीजिये। आपको [2, 3, 6] मिलता है। केवल एक मैच। आपका नंबर दो है।

एक समान मौका होगा कि कोई भी दी गई संख्या दिखाई देगी, लेकिन यह विशेष रूप से लागत प्रभावी नहीं है, यह देखते हुए कि केवल 3/32 परिवर्तन है कि किसी भी सेट की जोड़ी सफल होगी (केवल एक मैच)। तो औसतन, एल्गोरिथ्म को लगभग दस बार दोहराना होगा। इसके अलावा, यह विषम संख्या वाले मरने के लिए आसानी से सामान्य नहीं है।

बहुत कम से कम, शायद यह विचार के लिए भोजन है। बहुत ही रोचक सवाल।


4
लॉगnn12n2n/2n

0

मैं सिक्के को तीन बार फ्लिप करता हूं और एक बाइनरी नंबर के रूप में परिणाम की व्याख्या करता हूं, सीमा से बाहर के परिणामों को खारिज करता हूं।

उदाहरण के लिए, हेड्स 1 और टेल्स 0. होना चाहिए। यदि आपने इसे तीन बार फ़्लिप किया है और हेड्स, टेल्स, हेड्स प्राप्त किए हैं, तो आपके पास बाइनरी 101 होगी, जो दशमलव में 5 है। HHT = 110b = 6. TTT = 000b = 0 और HHH = 111b = 7, दोनों सीमा से बाहर हैं और अस्वीकार कर दिया जाएगा, और आप सभी अंकों के लिए फिर से भरना होगा।


1
यह सिर्फ फ्रैंक का जवाब है।
राफेल

2
@ राफेल वास्तव में, फ्रैंक के जवाब का एक सख्त सबसेट , क्योंकि फ्रैंक अपेक्षित समय को संबोधित करता है।
डेविड रिचेर्बी

0

दुर्भाग्य से कोई भी (निष्पक्ष) उचित (सिक्कों के) फेयर कॉइन (सिक्कों) का उपयोग करके (निष्पक्ष) मर नहीं सकता।

62

लेकिन एक निष्पक्ष "त्रि-सिक्का" (यदि इस तरह के शब्द का उपयोग किया जा सकता है) के साथ ऐसा कर सकते हैं। मतलब 3 परिणामों वाला एक सिक्का। और एक साधारण 2-सिक्का, इसलिए इन 2 सिक्कों का संयुक्त स्थान ठीक मरने के घटना स्थान से मेल खाता है।

अस्वीकृति नमूनाकरण (जैसा कि कुछ उत्तरों में उल्लेख किया गया है) वास्तव में एक अनुमानित सिमुलेशन प्रदान कर सकता है। लेकिन इसमें अभी भी त्रुटियों की एक राशि या गलत मिलान होगा (परिमित समय में)। इसलिए अगर कोई वास्तव में इन 2 प्रणालियों के घटना स्थलों से मेल खाना चाहता है, तो ऐसे मामले होंगे जो काम नहीं करेंगे।

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


टिप्पणियाँ विस्तारित चर्चा के लिए नहीं हैं; इस वार्तालाप को बातचीत में स्थानांतरित कर दिया गया है ।
गिलेस एसओ-

@Gilles, बहुत बुरा नकारात्मक वोट अभी भी यहाँ है, सभी स्पष्टीकरण और चैटिंग (शुद्धता के अनुसार) के बावजूद: p
Nikos M.
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.