गिवअवे (giveaway) के विजेता को चुनना हो, क्लास में किसी छात्र को बुलाना हो, या यह तय करना हो कि आज बर्तन कौन धोएगा? यह मुफ़्त ऑनलाइन टूल आपकी दी गई किसी भी सूची से निष्पक्ष और यादृच्छिक रूप से नाम चुनता है। बस अपनी सूची को 'आइटम' बॉक्स में पेस्ट करें — प्रत्येक नई लाइन पर एक, या अल्पविराम से अलग करके — 'चयन की संख्या' विकल्प में चुनें कि आपको कितने परिणाम चाहिए, और 'जनरेट करें' बटन दबाएं। एक सूची के लिए कम से कम दो प्रविष्टियों की आवश्यकता होती है और इसमें अधिकतम 1000 नाम रखे जा सकते हैं, जिनमें से प्रत्येक 200 वर्णों तक लंबा हो सकता है।
प्रत्येक चयन सीधे आपके ब्राउज़र में Web Crypto API (crypto.getRandomValues) का उपयोग करके किया जाता है, जो आपके डिवाइस के ऑपरेटिंग सिस्टम से ही क्रिप्टोग्राफ़िक रूप से सुरक्षित यादृच्छिक मूल्य प्रदान करता है। आपकी सूची कभी भी किसी सर्वर पर नहीं भेजी जाती, कहीं भी लॉग नहीं की जाती, और हमारे द्वारा कभी नहीं देखी जाती — और अन्य जनरेटर की तुलना में यह यहाँ अधिक मायने रखता है, क्योंकि लोग आमतौर पर ग्राहकों की सूची, क्लास रजिस्टर, या सहकर्मियों के नाम यहाँ पेस्ट करते हैं। 'फ़ाइल से लोड करें' बटन भी यही वादा निभाता है: आपका ब्राउज़र फ़ाइल को स्वयं पढ़ता है और इंटरनेट पर कुछ भी अपलोड किए बिना स्थानीय रूप से बॉक्स को भर देता है।
सभी विकल्प इस तरह से डिज़ाइन किए गए हैं जो लोगों द्वारा आमतौर पर इस्तेमाल की जाने वाली सूचियों के अनुकूल हों। 'आइटम विभाजक' डिफ़ॉल्ट रूप से 'स्वचालित पहचान' पर सेट रहता है और यह लाइन ब्रेक व अल्पविराम के बीच के अंतर को अपने आप समझ लेता है, इसलिए स्प्रेडशीट, चैट संदेश या दस्तावेज़ से कॉपी की गई सूची बिना किसी बदलाव के काम करती है। यदि आपके डेटा में अलग-अलग प्रारूप मिले हुए हैं, तो इसे 'नई पंक्ति', 'अल्पविराम' या 'स्पेस' विकल्प पर लॉक करें। ध्यान रखें कि 'स्पेस' विकल्प हमेशा आपकी अपनी सचेत पसंद होती है और कभी भी स्वचालित नहीं होती, क्योंकि पूरे नामों जैसी प्रविष्टियों के बीच में पहले से ही स्पेस होता है, और उन्हें डिफ़ॉल्ट रूप से अलग करने से सूची टूट जाएगी। 'चयन की संख्या' यह निर्धारित करता है कि 1 से 100 के बीच कितने नाम निकाले जाएंगे। 200 प्रतिभागियों में से तीन पुरस्कार विजेता चुन रहे हैं? प्रतिभागियों के नाम पेस्ट करें, 'चयन की संख्या' को 3 पर सेट करें और 'जनरेट करें' दबाएं। दो नियंत्रण केवल तभी काम करते हैं जब चयन की संख्या 2 या उससे अधिक हो, और तब तक वे निष्क्रिय (धूसर या ग्रे) रहते हैं: 'दोहराव न होने दें' स्विच, जो यह तय करता है कि एक ही प्रविष्टि को दो बार चुना जा सकता है या नहीं, और 'आउटपुट प्रारूप', जो निर्धारित करता है कि परिणामों को कैसे अलग किया जाएगा ('प्रत्येक नई पंक्ति पर', 'स्पेस से अलग किया गया', या 'अल्पविराम से अलग किया गया')।
'आइटम' बॉक्स के अंदर बटनों की पंक्ति उन संपादनों का काम करती है जिनके लिए आपको अन्यथा कहीं और जाना पड़ता। 'फ़ाइल से लोड करें' सूची को सीधे किसी प्लेन-टेक्स्ट या CSV फ़ाइल से खींच लाता है। 'फेरबदल करें' बटन बॉक्स में मौजूद प्रविष्टियों के क्रम को मिला देता है, 'क्रमबद्ध करें' बटन उन्हें वर्णानुक्रम में और संख्याओं को उनके प्राकृतिक क्रम में व्यवस्थित करता है (दूसरी बार क्लिक करने पर यह क्रम उलट जाता है), और 'साफ़ करें' बटन बॉक्स को पूरी तरह खाली कर देता है। 'नमूना डेटा भरें' एक छोटी उदाहरण सूची डाल देता है ताकि आप टूल को एक क्लिक में आज़मा सकें, जबकि 'बड़ा करें' बॉक्स को खोल देता है ताकि लंबी सूची पूरी तरह दिखाई दे, और 'छोटा करें' इसे वापस सिकोड़ देता है। परिणाम के ठीक नीचे, 'सभी कॉपी करें' प्रत्येक चयन को आपके क्लिपबोर्ड पर कॉपी कर लेता है, 'फ़ाइल में सहेजें' उन्हें आपके डिवाइस पर लिख देता है, और 'इतिहास' आपके ब्राउज़र में पिछले 10 ड्रॉ सहेजता है, जिससे पुराने परिणाम सिर्फ़ एक क्लिक दूर रहते हैं।
वास्तव में यह चयन कैसे होता है? जब आप 'जनरेट करें' दबाते हैं, तो यह पेज Math.random() जैसे किसी JavaScript स्यूडो-रैंडम फ़ंक्शन पर निर्भर रहने के बजाय, crypto.getRandomValues के माध्यम से ब्राउज़र से रैंडम मूल्य मांगता है और उनका उपयोग आपकी सूची में स्थानों को चुनने के लिए करता है। कच्चे 32-बिट मूल्य को किसी स्थान में बदलते समय ही रैंडम पिकर चुपचाप गलती करते हैं: सूची की लंबाई के अनुसार उस मूल्य को विभाजित करके शेषफल (modulo) लेना सबसे स्पष्ट लेकिन पक्षपातपूर्ण तरीका है, क्योंकि जब तक कि 2^32 संख्या सूची की लंबाई से पूरी तरह विभाजित न हो जाए, सूची की शुरुआत की प्रविष्टियां बाकी हिस्सों की तुलना में थोड़ी अधिक बार आती हैं। इस खामी को modulo bias कहा जाता है, और यह केवल सैद्धांतिक नहीं, बल्कि मापने योग्य है। यह पिकर इसके बजाय सूची की लंबाई के सबसे बड़े सटीक गुणक से अधिक किसी भी मूल्य को हटा देता है और फिर से ड्रॉ करता है — इस तकनीक को rejection sampling कहा जाता है। इसके लिए पृष्ठभूमि में कुछ अतिरिक्त ड्रॉ की आवश्यकता होती है, लेकिन यह अनुमानित परिणाम के बजाय सटीक निष्पक्षता की गारंटी देता है। सूची में स्थान कुछ भी नहीं बदलता: पहली और आखिरी प्रविष्टि हर ड्रॉ पर समान संभावना रखती है।
'दोहराव न होने दें' स्विच दो बिल्कुल अलग तरह के ड्रॉ को अलग करता है, और सांख्यिकी में हर एक का अपना नाम है। इसके चालू रहने पर, पिकर Fisher-Yates एल्गोरिदम का उपयोग करके आपकी सूची की एक प्रति को फेंट देता है और ऊपर से प्रविष्टियां लेता है — ठीक वैसे ही जैसे टोपी से बिना वापस रखे पर्चियां निकालना, ताकि किसी को भी दो बार न चुना जाए और उस आकार के प्रत्येक समूह की संभावना समान हो। इसे sampling without replacement कहा जाता है, और पुरस्कार विजेताओं, टीमों और बारी तय करने के लिए आपको यही चाहिए। इसके बंद होने पर, प्रत्येक चयन पूरी सूची से स्वतंत्र रूप से किया जाता है, इसलिए एक ही प्रविष्टि एक से अधिक बार आ सकती है — जिसे sampling with replacement कहा जाता है, जो तब आवश्यक होता है जब दोहराए गए ड्रॉ या त्वरित सांख्यिकीय नमूने की तरह हर राउंड में हर कोई योग्य बना रहता है। इनमें से कोई भी मोड दूसरे से अधिक निष्पक्ष नहीं है; वे केवल अलग-अलग सवालों के जवाब देते हैं।
एक निष्पक्ष ड्रॉ का बाहर से निष्पक्ष दिखना ज़रूरी नहीं है। दस नामों में से पांच निकालें, और आप नियमित रूप से दो ऐसे चयन देखेंगे जो मूल सूची में एक-दूसरे के बगल में थे, या यदि दोहराव की अनुमति है तो एक ही नाम लगातार दो बार आएगा, और ये सभी घटनाएं पूरी तरह से सामान्य हैं। प्रत्येक ड्रॉ स्वतंत्र होता है: पहले के चयनों का बाद वाले चयनों पर कोई प्रभाव नहीं पड़ता, और किसी के जीतने की 'बारी' कभी नहीं आती। इसके विपरीत सोचने की प्रवृत्ति को gambler's fallacy कहा जाता है, और यही वह प्रवृत्ति है जिसके कारण जब हमें खुद रैंडम चयन करने को कहा जाता है, तो हम खराब प्रदर्शन करते हैं — रैंडम चुनने के लिए कहे जाने पर हम पहली और आखिरी प्रविष्टि से बचते हैं, किसी नाम को दोहराने से बचते हैं, और अपनी पसंद को उस सीमा तक समान रूप से फैलाते हैं जितना वास्तविक संयोग कभी नहीं करता। एक परिणाम जो संदिग्ध रूप से बहुत साफ़-सुथरा या व्यवस्थित दिखता है, वह हमेशा किसी इंसान के हस्तक्षेप का परिणाम होता है; जबकि वास्तविक रैंडमनेस या यादृच्छिकता हमेशा गुच्छे और दोहराव पैदा करती है।
यह यादृच्छिक चयन टूल ही क्यों चुनें?
- केवल ब्राउज़र-आधारित चयन: आपकी सूची आपके डिवाइस पर पढ़ी जाती है और कहीं नहीं भेजी जाती
- Web Crypto API रैंडमनेस: Math.random() नहीं, बल्कि क्रिप्टोग्राफ़िक रूप से सुरक्षित
- कोई modulo bias नहीं: rejection sampling प्रत्येक प्रविष्टि की संभावना समान रखती है
- किसी भी आकार की सूची: नई पंक्ति, अल्पविराम या स्पेस द्वारा, बिना किसी रीफ़ॉर्मेटिंग के
- 'दोहराव न होने दें' मोड: विजेताओं या टीमों को बिना किसी को दोबारा चुने ड्रॉ करें
- 1000 प्रविष्टियों तक की क्षमता, और एक ही ड्रॉ में 100 चयनों तक की सुविधा
- बिल्ट-इन सूची टूल: फ़ाइल से लोड करें, फेरबदल करें, क्रमबद्ध करें, साफ़ करें, नमूना डेटा
- इतिहास और फ़ाइल में सहेजें: ड्रॉ का रिकॉर्ड रखें जिसे आपको बाद में सही साबित करना पड़ सकता है
- असीमित और मुफ़्त: कोई साइन-अप नहीं, उपयोग की कोई सीमा नहीं, हमारे सर्वर पर कुछ भी नहीं
यादृच्छिक (रैंडम) चयन हर उस जगह ज़रूरी हो जाता है जहाँ किसी निर्णय को बाद में उठने वाले सवालों का सामना करना पड़ता है। शिक्षक बिना किसी पक्षपात के छात्रों को बुलाते हैं और क्लास को प्रोजेक्ट ग्रुप्स में बांटते हैं। स्ट्रीमर और मार्केटर ऐसे दर्शकों के सामने गिवअवे और रैफ़ल के विजेता निकालते हैं जिन्हें परिणाम पर विश्वास होना चाहिए। मैनेजर उन कार्यों को सौंपते हैं जिन्हें कोई स्वेच्छा से नहीं करना चाहता, और टीमें यह तय करती हैं कि डेमो पहले कौन देगा या ऑन-कॉल कौन रहेगा। शोधकर्ता ऑडिट के लिए रिकॉर्ड का एक रैंडम नमूना निकालते हैं। परिवार इस बात पर बहस खत्म करते हैं कि टीवी पर क्या देखना है, और भूखे दोस्तों का समूह तय करता है कि किस ढाबे या रेस्टोरेंट में जाना है। इन सभी परिदृश्यों में एक बात समान है, और वह है एक ऐसा चयन जिसे बाद में कोई भी आसानी से समझा सके: यह ड्रॉ क्रिप्टोग्राफ़िक रैंडमनेस का उपयोग करता है, यह पूरी तरह से आपके डिवाइस पर होता है, और यदि बाद में कोई इसके बारे में पूछता है तो 'इतिहास' परिणाम को सुरक्षित रखता है।
इस टूल की कुछ वास्तविक सीमाओं को जानना भी ज़रूरी है। यह पिकर आपकी सूची में मौजूद अद्वितीय प्रविष्टियों से अधिक प्रविष्टियाँ नहीं निकाल सकता — तीन विजेताओं के लिए कम से कम तीन नामों की आवश्यकता होती है — और यह 200 वर्णों वाली 1000 प्रविष्टियों पर रुक जाता है, जिसमें एक ड्रॉ में अधिकतम 100 चयन हो सकते हैं। 'फेरबदल करें' और 'क्रमबद्ध करें' बटन लाइन-दर-लाइन काम करते हैं, इसलिए अल्पविराम से अलग की गई और एक ही लाइन पर पेस्ट की गई सूची को केवल तभी पुनर्व्यवस्थित किया जा सकता है जब प्रति लाइन एक प्रविष्टि हो; इसके अलावा, ये दोनों बॉक्स के टेक्स्ट को पुनर्व्यवस्थित करते हैं न कि ड्रॉ को, जो समान रूप से निष्पक्ष होता है चाहे आपकी प्रविष्टियां किसी भी क्रम में हों। इसके साथ ही, डिज़ाइन के अनुसार प्रत्येक प्रविष्टि का वज़न बिल्कुल समान होता है, इसलिए यदि किसी ड्रॉ में एक नाम को दोगुना गिना जाना है, तो उस नाम को सूची में दो बार लिखा जाना चाहिए। इन सीमाओं के भीतर दी गई गारंटी बेहद मजबूत है — आपकी सूची की प्रत्येक प्रविष्टि की, हर एक ड्रॉ में, बिल्कुल समान संभावना होती है।