मुख्य सामग्री पर जाएं
TirageAuSort.io
संयोग को समझना

हमारे रैंडम ड्रॉ कैसे निष्पक्ष हैं

हमारे ऑनलाइन रैंडम ड्रॉ विश्वसनीय कैसे बनाए गए हैं: Math.random बनाम crypto, सत्यापन योग्य निष्पक्षता और पारदर्शी कोड, सरल भाषा में समझाया गया।

6 min Rédaction TirageAuSort.io

TirageAuSort.io के पर्दे के पीछे: हमारे ड्रॉ कैसे निष्पक्ष हैं

आप साइट पर पाइल या फेस शुरू करते हैं। आप सिक्के को घूमते, उतरते, पाइल दिखाते देखते हैं। लेकिन आपके क्लिक और उस परिणाम के बीच वास्तव में क्या हुआ? और सबसे महत्वपूर्ण: आपको एक विश्वसनीय ऑनलाइन रैंडम ड्रॉ के लिए हम पर भरोसा क्यों करना चाहिए?

यह लेख ढक्कन खोलता है। दिखावे के लिए नहीं, और न ही विषय को शब्दजाल में डुबोने के लिए — बल्कि इसके विपरीत: ताकि पढ़ने के अंत में आप स्वयं सत्यापित कर सकें कि सब कुछ क्रम में है। पारदर्शिता एक नारा नहीं है; यह एक ठोस अभ्यास है। यहाँ बताया गया है कि हमारे ड्रॉ कैसे बनाए गए हैं, क्या उनकी निष्पक्षता की गारंटी देता है, और वे सरल चरण क्या हैं जो आपको डेवलपर हुए बिना यह जाँचने देते हैं।

कंप्यूटर “लॉटरी” कैसे करता है

ईमानदारी की पहली बात: एक कंप्यूटर शुद्ध यादृच्छिकता उत्पन्न नहीं कर सकता। वह गणितीय यादृच्छिकता उत्पन्न करता है। अंतर सूक्ष्म है, लेकिन वह मायने रखता है।

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

ठोस रूप में, आपका ब्राउज़र (Chrome, Firefox, Safari, Edge) दो अलग उपकरण साथ लाता है:

  • Math.random() — सामान्य-उद्देश्य फ़ंक्शन। यह तेज़ है, समान रूप से वितरित है, और सिक्का उछालने, पासा फेंकने या सूची से एक नाम चुनने के लिए पर्याप्त से अधिक है। आधुनिक ब्राउज़र इसे xorshift128+ नामक एल्गोरिथम के साथ लागू करते हैं, जो ऐसी श्रृंखलाएँ उत्पन्न करता है जिन्हें नंगी आँख से असली यादृच्छिकता से अलग करना असंभव है।
  • crypto.getRandomValues() — क्रिप्टोग्राफ़िक संस्करण। धीमा, लेकिन एक हमलावर के लिए भी अप्रत्याशित जो हज़ारों पिछले परिणामों को देख रहा हो। यह पासवर्ड या सुरक्षा कुंजियाँ उत्पन्न करने के लिए मानक उपकरण है।

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

निष्पक्षता की चार गारंटियाँ

सही जनरेटर चुनना पर्याप्त नहीं है। यदि उसके चारों ओर कोड खराब लिखा है तो ड्रॉ फिर भी पक्षपाती रह सकता है। साइट के हर खेल को चार नियम घेरते हैं।

एक समान वितरण

पाइल या फेस पर, पाइल को 50 % समय गिरना चाहिए और फेस 50 % — 49/51 नहीं। 1 और 100 के बीच नंबर जनरेटर पर, हर पूर्णांक की ठीक 1 % संभावना होनी चाहिए। यह स्पष्ट लगता है, लेकिन एक क्लासिक गलती जनरेटर के कच्चे आउटपुट पर मोड्यूलो ऑपरेटर (एक भाग का शेष) का उपयोग करना है, जो कुछ श्रेणियों पर एक छोटा लेकिन वास्तविक पूर्वाग्रह उत्पन्न करता है। हम इस जाल से आधिकारिक वेब प्रलेखन द्वारा अनुशंसित मानक विधि से बचते हैं: परिणाम को ऊपरी सीमा से गुणा करें और नीचे की ओर पूर्णांकित करें। परिणाम: 10,000 ड्रॉ में, मूल्यों के बीच का अंतर सांख्यिकीय रूप से नगण्य रहता है।

ड्रॉ के बीच कोई स्मृति नहीं

हर क्लिक एक स्वतंत्र घटना है। साइट आपके पिछले परिणामों को बाद वालों को “संतुलित” करने के लिए याद नहीं रखती — यह बिल्कुल कोड पर लागू जुआरी की भ्रांति होगी, और हम इसे एक पूरा लेख समर्पित करते हैं। यदि आप एक के बाद एक सात पाइल निकालते हैं, तो आठवें ड्रॉ की अब भी 50 % संभावना है पाइल होने की। यह अंतर्ज्ञान के लिए असुविधाजनक है, लेकिन यह बिल्कुल वही है जो हमारा कोड कठोरता से उत्पन्न करता है।

सब कुछ आपके ब्राउज़र में होता है

यह शायद सबसे महत्वपूर्ण बिंदु है। TirageAuSort.io एक स्थैतिक साइट है: कोई सर्वर नहीं है जो आपके परिणाम पर “निर्णय” लेता हो। जब आप क्लिक करते हैं, तो गणना आपकी अपनी मशीन पर चलती है, उस JavaScript कोड में जिसे आपने पृष्ठ पर पहुँचने पर डाउनलोड किया था। यह किसी भी सर्वर-साइड हेरफेर को तकनीकी रूप से असंभव बनाता है — कोई सर्वर ही नहीं है। यह कोड को देखने योग्य भी बनाता है, जो हमें अगले बिंदु पर लाता है।

सही उपयोग के लिए सही उपकरण

पासवर्ड का उदाहरण फिर लें। यदि हमने 16-वर्ण कुंजी उत्पन्न करने के लिए Math.random() का उपयोग किया होता, तो साइट को एक ही मिलीसेकंड में देखने वाले दो लोग, सैद्धांतिक रूप से, आंशिक रूप से अनुमानित पासवर्ड के साथ समाप्त हो सकते थे। crypto.getRandomValues() के साथ यह जोखिम गायब हो जाता है: जनरेटर सीधे ऑपरेटिंग सिस्टम के एन्ट्रॉपी स्रोतों (माउस की गति, कीस्ट्रोक, नेटवर्क घटनाएँ) से ईंधन लेता है, जो NIST की सुरक्षा सिफ़ारिशों के अनुरूप है। जहाँ यादृच्छिकता की गुणवत्ता के परिणाम होते हैं, वहाँ हम एक स्तर ऊपर जाते हैं।

स्वयं कैसे सत्यापित करें

यहाँ वह हिस्सा है जो इस लेख को अलग बनाता है: आपको हमारी बात मानने की ज़रूरत नहीं है।

परीक्षण #1 — कोड पढ़ें। साइट के किसी भी पृष्ठ पर F12 कुंजी दबाएँ। एक खिड़की खुलती है: ये डेवलपर टूल्स हैं, जो वर्षों से आपके ब्राउज़र में अंतर्निहित हैं। “स्रोत” या “डीबगर” टैब खोजें। वहाँ आपको पृष्ठ पर निष्पादित JavaScript सादे पाठ में मिलेगा। Math.random या crypto.getRandomValues खोजें: आप वस्तुतः उस पंक्ति को पढ़ेंगे जो आपका परिणाम उत्पन्न करती है। कोई अस्पष्टीकरण नहीं, कोई छिपी हुई तृतीय-पक्ष सेवा कॉल नहीं।

परीक्षण #2 — वितरण। लगातार सौ बार पाइल या फेस चलाएँ। परिणाम नोट करें। आप 50/50 के आसपास पहुँचने चाहिए, दस के आसपास संभावित अंतर के साथ। यदि आप अधिक कठोर होना चाहते हैं, ब्राउज़र कंसोल खोलें (अब भी F12, “कंसोल” टैब के माध्यम से) और टाइप करें: let p = 0; for (let i = 0; i < 10000; i++) if (Math.random() < 0.5) p++; p — आप 4,900 और 5,100 के बीच एक संख्या देखेंगे। यह गणितीय यादृच्छिकता है, बिना नाटक के।

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

यादृच्छिकता एक घटिया मार्केटिंग पिच है

बहुत सी साइटें “प्रमाणित ड्रॉ” की बात करती हैं बिना यह बताए कि किसके द्वारा या किस पद्धति से। हमारा दृष्टिकोण विपरीत है: कोई लेबल नहीं, कोई अस्पष्ट वादा नहीं — बस दो मानकीकृत वेब फ़ंक्शन, सही ढंग से उपयोग किए गए, स्थानीय रूप से निष्पादित किए गए, और किसी के लिए भी पठनीय जो डेवलपर टूल्स खोलता है। यदि कल कोई हमारे कोड में कोई त्रुटि पहचानता है, तो वह निर्माण द्वारा सार्वजनिक होगी और ठीक की जाएगी। यह एक विश्वसनीय ऑनलाइन रैंडम ड्रॉ की व्यावहारिक परिभाषा है: एक मार्केटिंग तर्क नहीं, बल्कि एक तकनीकी अनुबंध जिसका आप ऑडिट कर सकते हैं।

विषय में और गहराई से जाने के लिए, आप हमारे लेख पढ़ सकते हैं हमने कैसीनो खेल क्यों हटाए, समस्याग्रस्त जुए के संकेत, और पाइल या फेस की वास्तविक संभावनाओं पर — 10,000 उछालों पर इस निष्पक्षता का व्यावहारिक परीक्षण, मानक विचलन और log₂(N) सूत्र के साथ यह समझने के लिए कि क्यों लगातार 13 पाइल कुछ भी असाधारण नहीं है। इंजन की पारदर्शिता पहला कदम है; यह समझना कि आपके सिर में क्या हो रहा है, तार्किक अगला कदम है।

Questions fréquentes

क्या मेरे परिणाम वास्तव में यादृच्छिक हैं?

हाँ, जितने यादृच्छिक एक कंप्यूटर हो सकता है। निर्णय लेने वाले खेलों (पाइल या फेस, पासे, भाग्य चक्र) के लिए हम ब्राउज़र के अंतर्निहित यादृच्छिक एल्गोरिथम का उपयोग करते हैं, जो एक समान वितरण उत्पन्न करता है: 10,000 सिक्का उछालों में आपको 4,900 से 5,100 के बीच पाइल मिलेंगे। पासवर्ड जनरेटर जैसे संवेदनशील उपकरणों के लिए हम एक मज़बूत क्रिप्टोग्राफ़िक जनरेटर का उपयोग करते हैं। कोई भी ड्रॉ भारित, याद रखा या दोहराया नहीं जाता: परिणाम आपके ब्राउज़र में, उसी क्षण में जब आप क्लिक करते हैं, स्थानीय रूप से गणना किया जाता है।

क्या आप मेरा व्यक्तिगत डेटा बेचते हैं?

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

मेरा पसंदीदा अंक कभी क्यों नहीं आता?

क्योंकि मानवीय स्मृति प्रभावशाली परिणामों को पकड़ती है और बाकी को भूल जाती है। 1 से 100 के बीच नंबर जनरेटर पर, आपके पसंदीदा अंक के आने की संभावना हर ड्रॉ में ठीक 1% होती है — न ज़्यादा, न कम। अगर आपको लगता है कि वह 'कभी नहीं आता', तो यह लगभग हमेशा एक अनुभूति प्रभाव है: आप उन बार को नोट करते हैं जब वह नहीं आता, उन बार को नहीं जब वह आता है। इसे पुष्टिकरण पूर्वाग्रह कहते हैं, और यह जुआरी की भ्रांति का करीबी रिश्तेदार है।

क्या कोड वाकई कोई भी सत्यापित कर सकता है?

हाँ। TirageAuSort.io एक स्थैतिक फ्रंटएंड साइट है: ड्रॉ की गणना करने वाली कोड की हर पंक्ति आपके ब्राउज़र में चलती है, इसलिए वह आपकी मशीन पर सादे पाठ में डाउनलोड हो जाती है। एक राइट-क्लिक और 'पृष्ठ स्रोत देखें', या डेवलपर टूल्स खोलना (F12 कुंजी), उन फ़ंक्शंस को काम करते देखने के लिए पर्याप्त है। आप वस्तुतः उस पंक्ति को पढ़ सकते हैं जो Math.random() या crypto.getRandomValues() को कॉल करती है। ड्रॉ का कोई भी हिस्सा सर्वर-साइड ब्लैक बॉक्स के पीछे छिपा नहीं है।

Pour essayer

Articles liés

— स्रोत

  1. Math.random() — MDN Web Docs
  2. Crypto.getRandomValues() — MDN Web Docs
  3. There's Math.random(), and then there's Math.random() — V8 Engine Blog
  4. NIST SP 800-90A Rev. 1 — Recommendation for Random Number Generation Using Deterministic Random Bit Generators