यदि आप 70 के दशक के बच्चे हैं, तो आप लोकप्रिय गेम शो लेट्स मेक ए डील देखकर बड़े हुए होंगे। तब से, लोग मोंटी हॉल पहेली पर विशद रूप से चर्चा करते हैं और इसे दोहराने में मजा आता है। जब प्रतियोगी तीन दरवाजों में से एक को चुनता है तो दिमाग को हिला देने वाला सस्पेंस और ड्रामा हर बार देखने में मजेदार होता है।
गणित और थोड़ी सी प्रोग्रामिंग का उपयोग करके, आप पायथन का उपयोग करके मोंटी हॉल सिम्युलेटर बनाने जा रहे हैं। इसका उपयोग करके, आप एक बार और सभी के लिए यह तय करने में सक्षम होंगे कि दरवाजों को बदलने से आपके जीतने की संभावना बढ़ जाती है।
मोंटी हॉल समस्या क्या है?
मोंटी हॉल समस्या गेमशो होस्ट, मोंटी हॉल के नाम पर एक ब्रेन टीज़र है। तीन दरवाजे हैं, जिनमें से केवल एक में वांछित पुरस्कार है। एक बार जब आप एक दरवाजा चुनते हैं, मोंटी-जो जानता है कि उनके पीछे क्या है-एक बकरी को प्रकट करते हुए एक और दरवाजा खोलता है। अब आपके पास अपने मूल निर्णय पर टिके रहने या दूसरे दरवाजे पर स्विच करने का विकल्प है।
अपनी आश्चर्यजनक और अप्रत्याशित प्रकृति के कारण मोंटी हॉल पहेली बहुत लोकप्रिय है। यद्यपि यह संभावनाओं से संबंधित है, समाधान अंतर्ज्ञान को धता बताता है। यह एक उत्कृष्ट प्रदर्शन के रूप में कार्य करता है कि संभाव्यता गणना कितनी भ्रामक हो सकती है। पहेली हमें सिखाती है कि कैसे प्रतीत होने वाली यादृच्छिक घटनाओं के छापों को अनदेखा किया जाए और इसके बजाय तर्क और तथ्यों पर ध्यान केंद्रित किया जाए।
रैंडम और टिंकर मॉड्यूल
पायथन में मोंटी हॉल सिमुलेशन बनाने के लिए, रैंडम और टिंकर मॉड्यूल से शुरू करें।
रैंडम मॉड्यूल में यादृच्छिक संख्या उत्पन्न करने के लिए कई कार्य हैं। आप इन एल्गोरिदम का उपयोग शफल अनुक्रम, गेम मूवमेंट और छद्म-यादृच्छिक पूर्णांक उत्पन्न करने के लिए कर सकते हैं। में इसका प्रयोग बहुधा किया जाता है हाथ क्रिकेट जैसे खेल, या एक साधारण टाइपिंग टेस्ट, साथ ही पासा रोल अनुकरण करने और सूचियों को बदलने के लिए।
पाइथन के लिए टिंकर डिफ़ॉल्ट जीयूआई लाइब्रेरी है। इसका उपयोग करके, आप शानदार GUI एप्लिकेशन बना सकते हैं। आप टू-डू लिस्ट ऐप, टेक्स्ट एडिटर या साधारण कैलकुलेटर बना सकते हैं। आप अपने ज्ञान को व्यवहार में ला सकते हैं और बुनियादी डेस्कटॉप ऐप बनाने के लिए पायथन और टिंकर का उपयोग करके अपने प्रोग्रामिंग कौशल को सुधार सकते हैं।
एक टर्मिनल खोलें और अपने सिस्टम में टिंकर को जोड़ने के लिए निम्नलिखित कमांड चलाएँ:
पिप टिंकर स्थापित करें
पायथन का उपयोग करके मोंटी हॉल सिम्युलेटर कैसे बनाएं
आप इसमें मोंटी हॉल सिम्युलेटर का सोर्स कोड पा सकते हैं गिटहब रिपॉजिटरी.
यादृच्छिक और टिंकर मॉड्यूल आयात करें। StringVar फ़ंक्शन किसी विजेट जैसे लेबल या प्रविष्टि के मान को नियंत्रित करना आसान बनाता है। आप स्क्रीन पर कुछ पाठ प्रदर्शित करने के लिए लेबल का उपयोग कर सकते हैं और उपयोगकर्ता इनपुट प्राप्त करने के लिए एक प्रविष्टि का उपयोग कर सकते हैं।
टिंकर उदाहरण को प्रारंभ करें और रूट विंडो प्रदर्शित करें। का उपयोग करके विंडो के आयामों को 600 पिक्सेल चौड़ा और 200 पिक्सेल लंबा सेट करें ज्यामिति () तरीका। एक उपयुक्त विंडो शीर्षक सेट करें, और इसके आकार बदलने पर रोक लगाएं।
आयात अनियमित
से tkinter आयात स्ट्रिंगवर, लेबल, टीके, एंट्री
विंडो = टीके ()
विंडो.ज्यामिति ("600x200")
विंडो शीर्षक ("मोंटी हॉल सिमुलेशन")
विंडो. आकार बदलने योग्य (0, 0)
अगला, सिमुलेशन परिणामों को संग्रहीत करने के लिए विजेट और चर के दो जोड़े सेट करें। आपका ऐप कई रन पूरा करने के लिए कहेगा। प्रत्येक रन के दौरान, यह खेल का अनुकरण करेगा और प्रत्येक मामले में परिणाम रिकॉर्ड करेगा: चाहे खिलाड़ी स्विच करने का निर्णय लेता है या समान विकल्प रखता है।
StringVar() का उपयोग करके, समान पसंद के प्रारंभिक मान सेट करें और विकल्प को 0 पर स्विच करें। एक एंट्री विजेट को परिभाषित करें और इसके फ़ॉन्ट आकार को 5 पर सेट करें। समान और स्विच की गई पसंद को प्रदर्शित करने के लिए दो लेबलों की घोषणा करें और इसे स्थिति दें। दो और लेबल घोषित करें जो आपके द्वारा पहले परिभाषित चर के मान प्रदर्शित करेंगे। अंत में, इन चार लेबल के नीचे एंट्री विजेट को रखें।
Same_choice = StringVar()
Switched_choice = StringVar()
Same_choice.सेट (0)
स्विच्ड_चॉइस.सेट (0)
no_sample = प्रविष्टि (फ़ॉन्ट =5)
लेबल (पाठ ="एक ही विकल्प".जगह (एक्स =230, वाई =58)
लेबल (पाठ ="बदली हुई पसंद".जगह (एक्स =230, वाई =90)
लेबल (textvariable=same_choice, फ़ॉन्ट=(50)).स्थान (एक्स =350, वाई =58)
लेबल (textvariable=switched_choice, फ़ॉन्ट=(50)).स्थान (एक्स =350, वाई =90)
no_sample.place (एक्स =200, वाई =120)
एक समारोह परिभाषित करें, अनुकरण. परिणाम चर प्रारंभ करें और उपयोगकर्ता द्वारा दर्ज नमूना मान प्राप्त करें। एक सूची घोषित करें जिसमें वे आइटम हों जो दरवाजे प्रकट करेंगे।
प्रत्येक रन के भीतर, मूल दरवाजों की एक डुप्लिकेट सूची बनाएं और इसे यादृच्छिक क्रम में फेरबदल करें। एक यादृच्छिक दरवाजा चुनें और इसे हटा दें - यह खिलाड़ी की पसंद का अनुकरण करता है। फिर मोंटी के खुलासे का अनुकरण करें: यदि पहले दरवाजे में पुरस्कार नहीं है, तो उसे खोल दें, अन्यथा दूसरा दरवाजा खोल दें। उस विकल्प को हटा दें और शेष दरवाजे को स्विच करने के विकल्प के रूप में छोड़ दें।
डीईएफ़अनुकरण(आयोजन):
समान_विकल्प_परिणाम = 0
स्विच_चॉइस_परिणाम = 0
नमूने = int (no_sample.get ())
दरवाजे = ["सोना", "बकरी", "बकरी"]
के लिए _ में सीमा (नमूने):
सिम्युलेटेड_डोर्स = डोर.कॉपी ()
random.shuffle (नकली_द्वार)
first_choice = random.choice (नकली_द्वार)
सिम्युलेटेड_डोर्स.रिमूव (फर्स्ट_चॉइस)
open_door = नकली_द्वार [0] अगर सिम्युलेटेड_डोर [0] != "सोना"अन्य सिम्युलेटेड_डोर [1]
सिम्युलेटेड_डोर्स.रिमूव (ओपन_डोर)
स्विच्ड_सेकंड_चॉइस = सिम्युलेटेड_डोर्स [0]
यदि पहली पसंद में वांछित पुरस्कार शामिल है, तो उसी पसंद के परिणाम को एक से बढ़ाएं और इसे स्क्रीन पर प्रदर्शित करें। अन्यथा, स्विच की गई पसंद के लिए वही ऑपरेशन करें।
अगर फर्स्ट_चॉइस == "सोना":
समान_विकल्प_परिणाम += 1
Same_choice.set (समान_विकल्प_परिणाम)
elif स्विच_सेकंड_चॉइस == "सोना":
स्विच_चॉइस_परिणाम += 1
Switched_choice.set (switched_choice_result)
टिंकर विंडो में एक घटना के साथ एंटर कुंजी को बाध्य करना एक महत्वपूर्ण कदम है। ऐसा करने से यह सुनिश्चित होता है कि जब खिलाड़ी दबाता है प्रवेश करना, एक विशेष समारोह चलेगा। इसे प्राप्त करने के लिए, पास करें
मुख्य घेरा() फ़ंक्शन पायथन को टिंकर इवेंट लूप चलाने के लिए कहता है और जब तक आप विंडो बंद नहीं करते तब तक ईवेंट (जैसे बटन प्रेस) सुनें।
no_sample.बाइंड ("" , अनुकरण करें)
विंडो.मेनलूप ()
यह सब एक साथ रखो और कार्रवाई में पहेली को अनुकरण करने के लिए अपना प्रोग्राम चलाएं।
पायथन का उपयोग करते हुए मोंटी हॉल सिम्युलेटर का आउटपुट
प्रोग्राम चलाने पर, आपको समान और स्विच्ड चॉइस लेबल वाली एक साधारण विंडो दिखाई देगी। सिम्युलेटेड परिणाम देखने के लिए नीचे फ़ील्ड में एक नमूना संख्या दर्ज करें। 3 रनों के इस नमूने में, प्रोग्राम दिखाता है कि यह एक ही विकल्प के साथ एक बार और स्विच के साथ दो बार जीतता है।
ये परिणाम यादृच्छिक हैं, लेकिन आप अधिक सटीकता के लिए बड़े नमूना आकार के साथ अनुकरण चला सकते हैं। 100 के निम्नलिखित नमूना आकार में, स्विच की गई पसंद 65 बार जीतती है।
प्रोग्रामिंग का उपयोग करके समस्याओं को हल करना
मोंटी हॉल सिम्युलेटर एक उत्कृष्ट प्रदर्शन है कि आप वास्तविक जीवन की समस्याओं को हल करने के लिए प्रोग्रामिंग का उपयोग कैसे कर सकते हैं। आप विशिष्ट कार्यों को पूरा करने के लिए विभिन्न एल्गोरिदम और ट्रेन मॉडल विकसित कर सकते हैं जैसे किसी सरणी को सॉर्ट करना या इष्टतम उत्पादन के लिए सिस्टम की प्रभावशीलता में सुधार करना।
प्रोग्रामिंग को आसान बनाने के लिए विभिन्न प्रोग्रामिंग भाषाएं विभिन्न क्षमताओं और कार्यों की पेशकश करती हैं। पायथन का उपयोग करके, आप ऐसे मॉडल बना सकते हैं जो उच्च सटीकता के साथ डेटासेट के भविष्य के मूल्यों की भविष्यवाणी कर सकते हैं। इसके अलावा, आप दोहराए जाने वाले कार्यों को स्वचालित कर सकते हैं, उबाऊ काम कम कर सकते हैं और गति और सटीकता में सुधार कर सकते हैं।