2011-02-02 14 views
7

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

एलिस और बॉब ई-मेल पर बोर्ड गेम खेलना चाहते हैं। उन्हें पासा को इस तरह से रोल करने का एक तरीका खोजने की ज़रूरत है जो उन्हें धोखा नहीं देगी।

ऐसा करने के लिए एक अच्छा एल्गोरिदम क्या है।

+3

आपका उत्तर क्या था? –

+1

@Justin मॉर्गन: वह सिर्फ प्रश्न पूछा 2 मिनट पहले, उसे एक पल दे ... –

+0

बस देखा जैसे वह उस में पेस्ट करने के लिए भूल गया, कि सब :) –

उत्तर

7

यह क्रिप्टोग्राफी में एक क्लासिक समस्या है।

एक ऐसी कागज: Coin Flipping by Telephone

कुछ असंभव परिणाम भी स्पष्ट कर रहे हैं। http://www.cs.columbia.edu/~dglasner/MyPapers/coin-cut.pdf

आशा है कि मदद करता है:

उदाहरण संदर्भ [C86] इस पत्र में यहां के लिए

4

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

चरण 1:

निम्नलिखित crypto_function में sha1sum या md5sum की तरह कुछ हो सकता है

पर्याप्त रूप से बड़े

    नीचे crypto_function के लिए संभव मानों की श्रेणी बनाने के लिए आवश्यक
  • ऐलिस यादृच्छिक संख्या Ra1 औरचुनता हैऔर बॉब को Ra1 भेजें।
  • बॉब यादृच्छिक संख्या Rb1 और Rb2 चुनता है और एलिस में Rb1 भेजता है।

चरण 2:

सबूत Hx कि मूल्य Vx अब तय हो गई है बनाता है, लेकिन है कि सबूत

  • ऐलिस एक मूल्य Va उठाता से इस बात का अनुमान लगाना मूल्य को रोकने (0 < = Va < = 5), एक स्ट्रिंग Sa="Va Ra2 Rb1" लिखें, और बॉब को Ha=crypto_hash(Sa) भेजें।
  • बॉब एक ​​मूल्य Vb (0 < = Vb < = 5) चुनता है, एक स्ट्रिंग Sb="Vb Rb2 Ra1", लिखने, और ऐलिस के लिए एक Hb=crypto_hash(Sb) भेजें।

चरण 3:

वांछित परिणाम V

  • ऐलिस बॉब के लिए Sa भेजता उत्पन्न करता है। बॉब HaSa से बाहर की गणना करें और इसे Ha से चरण 2 से तुलना करें। VaSa से बाहर ले जाएं, और V=(Va+Vb)%6+1 मान की गणना करें।
  • बॉब Sb एलिस को भेजता है। ऐलिस Sb से बाहर की गणना करें और इसे चरण 2 से Hb पर तुलना करें। Sb से बाहर ले जाएं, और V=(Vb+Va)%6+1 मान की गणना करें।

अद्यतन:

Coin Flipping by Telephone एल्गोरिथ्म Moron @ द्वारा सुझाए गए के आधार पर हो सकता है:

  1. बॉब एक ​​यादृच्छिक संख्या R और मूल्य 0 <= Vb <= 5 उठाता है, एक की गणना करता है हैश H=crypto_hash("Vb R"), और इसे ऐलिस भेजता है।

  2. ऐलिस मूल्य 0 <= Va <= 5 चुनता है, और इसे बॉब भेजता है।

  3. बॉब Vb और R ऐलिस को भेजता है; बॉब V=(Va+Vb)%6+1

  4. एलिस H=crypto_hash("Vb R") सत्यापित करता है; ऐलिस V=(Va+Vb)%6+1

की गणना करता है ... हालांकि मैं इसके बारे में बेहतर महसूस होगा यदि:

0. ऐलिस एक यादृच्छिक संख्या Q उठाता है और बॉब को भेज देता है।

और धोने की स्ट्रिंग "Vb Q R" बन जाती है।

+0

लगता है कि मैंने क्या किया होगा। हालांकि मुझे नहीं लगता कि आपको अंतिम गणना में -2 की आवश्यकता है। मॉड्यूलस ऑपरेशन उस तरह से बाहर है। मुझे लगता है कि आपकी यादृच्छिक संख्याएं पासा रोल के समान नहीं हैं, लेकिन मैंने पहले पढ़ने पर सोचा था ताकि आप इसे स्पष्ट करना चाहें। – Chris

+1

'वी' की गणना में, ऐसा लगता है कि आप 'वा' और' Vb' की श्रेणियों के बारे में धारणाओं का उपयोग कर रहे हैं। क्या आप उन्हें स्पष्ट कर सकते हैं? –

+0

@ क्रिसिस, @jieedev, धन्यवाद। मैंने आपकी टिप्पणियों को एकीकृत किया है। –

4

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

+2

आधुनिक संस्करण http://www.rpglibrary.org/software/securedice/ जैसा कुछ है जो सीरियल नंबरों के साथ पासा रोल ईमेल कर सकता है और एक हैश जो सत्यापित करने योग्य ऑनलाइन है। –

+1

@justin पोस्ट एक उत्तर के रूप में! - सीरियल नंबर यहां महत्वपूर्ण समस्या है –

+0

आपको उस समस्या को हल करने की भी आवश्यकता है जिसे एक खिलाड़ी चुनने के लिए * कब * पासा फेंकने का विकल्प चुन सकता है, उसका मूल्य चुन सकता है। –

0

एक स्वचालित तृतीय पक्ष सर्वर सेटअप करें जहां प्रत्येक पासा रोलिंग और अन्य प्लेयर को अग्रेषित करने के लिए ईमेल भेजता है?

अन्यथा यह इस खेल को खेलने के लिए बहुत ही सरल काम है और मैंने छोड़ दिया!

2

ऐलिस और बॉब डिफी-हेलमैन, Sa और Sb जैसे कुछ सत्रों का उपयोग करके दो सत्र कुंजी पर सहमत हैं। प्रत्येक सत्र कुंजी एक यादृच्छिक संख्या जनरेटर का बीज है, Ra और Rb

आरएनजी प्रत्येक मर रोल के लिए एक बार पैड के रूप में उपयोग किया जाता है। यदि ऐलिस रोल करना चाहता है, तो Ra[i] लेता है जहां i अनुक्रम में ith यादृच्छिक संख्या है। एलिस बॉब को i और Ra[i] दोनों भेजता है। Ra की अपनी प्रति का उपयोग कर बॉब i सत्यापित कर सकता है।

यह ऐलिस उसके i कि बॉब द्वारा निरीक्षण कर रहे हैं के अनुक्रमिक मानों का उपयोग करने की आवश्यकता द्वारा ईमानदार रहता है।

+0

यदि बॉब में रा भी है और जानता है कि मैं अगला क्या हूं, तो क्या वह ऐलिस को भेजने से पहले पासा रोल की भविष्यवाणी नहीं कर सकता? 'कौन पहले छः रोल करता है' का खेल बनाता है ... – Spacedman

+0

क्या वह गेम पहले से ही उबाऊ नहीं है? ;) हां, अगर अगले मर रोल की अनिश्चितता महत्वपूर्ण है, तो यह सही समाधान नहीं है। लेकिन यह शायद मामलों में सबसे आसान समाधान है जहां इससे कोई फर्क नहीं पड़ता। –

4

http://rpglibrary.org/software/securedice जो सीरियल नंबर और एक हैश निरीक्षण ऑनलाइन है कि साथ पासा रोल ईमेल कर सकते हैं जैसे एक विश्वसनीय तृतीय पक्ष का प्रयोग करें।

1

मैं एक ऐसी ही सवाल मैंने पूछा जो था मैं कैसे आर के लिए पासा कर सकते हैं करने के लिए एक प्रतिक्रिया मिली? प्रतिक्रिया "अंतरंग पासा" के लिए एक कार्यक्रम के अलावा आर के लिए एक कार्यक्रम था। मुझे यकीन नहीं है कि एलिस और बॉब में कौन दिलचस्पी है, लेकिन मैं रिमोट डेस्कटॉप के अलावा आर का उपयोग करने का सुझाव देता हूं ताकि प्रत्येक खिलाड़ी देख सके कि दूसरा धोखाधड़ी नहीं कर रहा है। http://cran.r-project.org/:

आप इसे यहां से डाउनलोड करके सांख्यिकीय कार्यक्रम आर प्रारंभ में पासा बनाना चाहते हैं:

मैं कोड लिखने के लिए कैसे तो मैं कॉपी/प्रतिक्रिया चिपकाया मुझे प्राप्त हुआ है पता नहीं है। #Dice रोल समारोह RollDie = समारोह (एन) नमूना:

एक सामान्य पासा निम्न स्क्रिप्ट का उपयोग करने के लिए (1: 6, एन, की जगह = टी) मरो #use RollDie (एन)

#If you'd like to spice things up a bit and make a dice for safe and consensual adult 
#activities then use the following series of scripts: 

#Creating the function, use this script: 
#Intimate dice function 

Actions= c("kiss","lick","suck","bite", 
"spank","blow", "stroke", 
"tickle","pinch", 
"torment") 

Body= c("lips","arms","chest","thighs", 
"neck","ear", "wrist", 
"navel","nipples", 
"the good stuff") 

Action= function(n) sample(Actions[1:10],n,replace=T) 

Area= function(n) sample(Body[1:10],n,replace=T) 

Action(1) 

Area(1) 

#If you'd like the dice saved to the R global environment so you can be ready for when 
the mood is right use the following script: 

#Save the following script as yourfile.R in something like this location "C:\\Documents   
and Settings\\yourfile.R" 

#Intimate dice 
Action(1) 
Area(1) 
#yes 

#Now create the following function to save to R's global environment with the following:  

#Run all 
source("C:\\Documents and Settings\\yourfile.R",echo=T) 

hi<-function(){source("C:\\Documents and Settings\\yourfile.R",echo=T)} 

#ok 

#close and save your R workspace 
#upon opening run the following function: 
hi() 
#If this has been done properly then you should see something along the lines of this: 
#Intimate dice 
Action(1) 
[1] "bite" 

Area(1) 
[1] "ear" 

#yes 

#Here's to one more reason for celebrating math & science