यादृच्छिक संख्या जनरेटर

कोणत्याही श्रेणीत एक यादृच्छिक संख्या, यादी, किंवा संख्यांचे अनेक संच तयार करा — सर्व काही थेट तुमच्या ब्राउझरमध्ये क्रिप्टोग्राफिक दृष्ट्या सुरक्षित यादृच्छिकतेने तयार होते, कधीही सर्व्हरवर नाही.

निवडण्यासाठी 'तयार करा' दाबा
पर्याय

पटकन आणि निष्पक्षपणे एक यादृच्छिक संख्या हवी आहे? हा मोफत ऑनलाइन यादृच्छिक संख्या जनरेटर तुम्ही निवडलेल्या कोणत्याही श्रेणीत एक संख्या — किंवा संख्यांची संपूर्ण यादी — तयार करतो, मग ती १ ते १० इतकी सोपी श्रेणी असो किंवा अब्जावधीपर्यंत पसरलेली श्रेणी. 'किमान' आणि 'कमाल' बॉक्समध्ये सर्वात लहान आणि सर्वात मोठी व्हॅल्यू ठेवा, 'निवडीची संख्या' मध्ये किती संख्या हव्यात ते ठरवा, आणि 'तयार करा' वर क्लिक करा. दोन्ही मर्यादा निकालात समाविष्ट असतात, त्यामुळे १ ते १० ही श्रेणी १ आणि १० — दोन्ही देऊ शकते.

प्रत्येक निकाल थेट तुमच्या ब्राउझरमध्ये Web Crypto API (crypto.getRandomValues) च्या मदतीने तयार होतो — हे तुमच्या ब्राउझरच्या अंतर्गत प्रणालीकडून मिळणारी क्रिप्टोग्राफिक दृष्ट्या मजबूत यादृच्छिक व्हॅल्यूज देते. काहीही सर्व्हरवर पाठवले जात नाही, काहीही सेव्ह केले जात नाही, आणि आम्ही तुमच्या संख्या कधीही पाहत नाही. निर्मिती त्वरित आणि खासगी असते, आणि पेज लोड झाल्यानंतर संथ कनेक्शनवरही काम करत राहते.

हे पर्याय अशा खऱ्याखुऱ्या परिस्थितींसाठी बनवले आहेत, जिथे लोकांना खरोखरच यादृच्छिक संख्यांची गरज असते. एखादी संख्या दोनदा येऊ नये यासाठी 'पुनरावृत्ती टाळा' चालू करा — ही सोय रॅफल, लॉटरी-प्रकारच्या ड्रॉसाठी किंवा लोकांना पुनरावृत्तीशिवाय गटांमध्ये विभागण्यासाठी उपयोगी आहे. ५०० सहभागींमधून वीस विजेते हवे आहेत? 'किमान' १ वर आणि 'कमाल' ५०० वर ठेवा, 'पुनरावृत्ती टाळा' चालू करा, 'निवडीची संख्या' २० वर ठेवा, आणि 'तयार करा' वर क्लिक करा. 'क्रमवारी' निकाल चढत्या किंवा उतरत्या क्रमाने लावतो, आणि एका बटणाने सर्व निकाल कॉपी होतात. 'आउटपुट स्वरूप' 'नवीन ओळ' वरून 'स्पेसने विभक्त' किंवा 'स्वल्पविरामाने विभक्त' असे बदलल्यास 'संचांची संख्या' हा बॉक्स दिसतो: एकाच वेळी अनेक स्वतंत्र ड्रॉ — जसे की वीस ड्रॉ फेऱ्यांसाठी प्रत्येकी ३ संख्यांचे वीस संच — आणि 'संचांमध्ये पुनरावृत्तीला परवानगी द्या' हे ठरवते की एकच संख्या यांपैकी एकापेक्षा जास्त संचांत येऊ शकते का.

यादृच्छिकता प्रत्यक्षात कशी तयार होते? तुमचा ब्राउझर Math.random() सारख्या JavaScript PRNG ऐवजी Web Crypto API च्या मदतीने क्रिप्टोग्राफिक दृष्ट्या मजबूत यादृच्छिक व्हॅल्यूज देतो. 'तयार करा' वर क्लिक केल्यावर, पेज crypto.getRandomValues च्या मदतीने यादृच्छिक व्हॅल्यूज मागते आणि त्यांचा वापर करून तुम्ही निवडलेल्या श्रेणीत संख्या तयार करते. यादृच्छिकतेचा मूळ स्रोत ब्राउझर आणि ऑपरेटिंग प्रणालीकडून मिळतो, त्यामुळे पेजला स्वतःची सुरुवातीची व्हॅल्यू (seed) किंवा स्यूडो-यादृच्छिक क्रम राखून ठेवण्याची गरज नसते.

एखादी कच्ची व्हॅल्यू तुमच्या श्रेणीत बसवणे ही अशी जागा आहे, जिथे जनरेटर्स शांतपणे चुकतात, आणि ही गोष्ट स्वतंत्र परिच्छेदास पात्र आहे. व्हॅल्यूला श्रेणीच्या आकाराने भागून उरणारा भाग घेणे हा सर्वात सोपा मार्ग वाटतो, पण तो पक्षपाती आहे: श्रेणी बरोबर 2^32 ने भाग जात नसेल, तर सर्वात लहान संख्या इतरांपेक्षा किंचित जास्त वेळा येतात. या त्रुटीला modulo bias म्हणतात, आणि ती केवळ सैद्धांतिक नसून मोजता येण्याजोगी आहे. हा जनरेटर त्याऐवजी श्रेणीच्या सर्वात मोठ्या नेमक्या पटीच्या पलीकडची कोणतीही व्हॅल्यू टाकून देतो आणि पुन्हा प्रयत्न करतो — या तंत्राला rejection sampling म्हणतात. यासाठी काही जास्तीचे प्रयत्न लागतात, पण त्याबदल्यात एक अचूक हमी मिळते: 'किमान' आणि 'कमाल' यांच्यामधील प्रत्येक संख्येची शक्यता पूर्णपणे सारखी असते, जवळपास सारखी नाही.

एखादी संख्या खरोखर यादृच्छिक कशामुळे बनते? एखादी संख्या पुरेशी यादृच्छिक असते, जेव्हा आधीचे निकाल पुढच्याबद्दल काहीही सांगत नाहीत — आणि प्रत्यक्षात याचे तीन स्तर असतात. Math.random() सारखे साधे स्यूडो-यादृच्छिक फंक्शन एक निश्चित (deterministic) अल्गोरिदम चालवते: याची अंतर्गत स्थिती जाणणारी कोणतीही व्यक्ती संपूर्ण क्रम पुन्हा तयार करू शकते, ज्यामुळे ते स्लाइडशो शफल करण्यासाठी योग्य ठरते, पण जिथे निकाल भाकीत करता येऊ नये अशा कोणत्याही गोष्टीसाठी अयोग्य ठरते. एक क्रिप्टोग्राफिक दृष्ट्या सुरक्षित जनरेटर (CSPRNG) — जो स्तर हे टूल वापरते — हादेखील एक अल्गोरिदमच आहे, पण तो प्रणालीतील यादृच्छिकतेच्या सुरक्षित स्रोताचा वापर करून अनपेक्षित व्हॅल्यूज तयार करण्यासाठी डिझाइन केलेला आहे, आणि असा बनवला आहे की त्याचे आउटपुट पाहूनही पुढच्या व्हॅल्यूबद्दल काहीही समजत नाही. वातावरणीय आवाज किंवा किरणोत्सारी क्षय यांसारख्या स्रोतांमधून येणारी नैसर्गिक यादृच्छिकता या दोन्ही स्तरांच्याही वर असते, तरीही श्रेणीतून संख्या तयार करण्याचा प्रश्न येतो तेव्हा व्यावहारिक फरक नाहीसा होतो. याच कारणामुळे ब्राउझर्स फक्त Math.random() सुधारण्याऐवजी एक वेगळे क्रिप्टो API देतात: हे दोन्ही वेगवेगळ्या समस्या सोडवतात, आणि निकाल कोणासाठी तरी महत्त्वाचा असतो तेव्हा यांपैकी फक्त एकच सुरक्षित असतो.

यादृच्छिक क्रमाला लोकांना यादृच्छिक दिसणे गरजेचे नाही. १ आणि १० यांच्यामध्ये दहा संख्या तयार करा, आणि तुम्हाला वारंवार एक पुनरावृत्ती, ७, ७, ८ सारखा जवळचा छोटा समूह, किंवा असा छोटा क्रम दिसेल ज्यात सर्व संख्या मोठ्या असतील — आणि यांपैकी प्रत्येक गोष्ट अगदी सामान्य आहे. खरी यादृच्छिकता अनपेक्षित असते, समान रीतीने पसरलेली नसते: प्रत्येक संख्या आधीच्या संख्यांपासून स्वतंत्रपणे येते, आधीच्या संख्यांचा पुढच्या संख्यांवर अजिबात परिणाम होत नाही, आणि कोणत्याही संख्येला दुसऱ्या संख्येपेक्षा जास्त शक्यता नसते. उलट मानण्याची ही प्रवृत्ती म्हणजे जुगाऱ्याचा भ्रम, आणि हीच प्रवृत्ती लोकांना स्वतःच यादृच्छिक संख्या तयार करण्यात कमकुवत बनवते — जेव्हा आपल्याला स्वतः एक यादृच्छिक क्रम तयार करायला सांगितले जाते, तेव्हा आपण पुनरावृत्ती टाळतो आणि व्हॅल्यूज त्याहून कितीतरी जास्त समान प्रमाणात विभागतो, जेवढी यादृच्छिकता कधीच करणार नाही. जो निकाल गरजेपेक्षा जास्त नीटनेटका दिसतो, तो माणसाची खूण आहे; खरी यादृच्छिकता गुच्छ तयार करते.

हा यादृच्छिक संख्या जनरेटर का निवडावा?

यादृच्छिक संख्या बहुतेक लोकांच्या कल्पनेपेक्षा कितीतरी जास्त ठिकाणी वापरल्या जातात. शिक्षक कोणाला विशेष झुकते माप न देता विद्यार्थ्यांना बोलावतात. स्ट्रीमर्स आणि मार्केटिंग टीम्स प्रेक्षकांसमोर गिवअवे आणि ड्रॉचे विजेते निवडतात, जेणेकरून प्रेक्षकांना निकालावर विश्वास ठेवता येईल. खेळाडू हरवलेला फासा बदलतात किंवा कोण आधी सुरुवात करेल हे ठरवतात, आणि स्पर्धांमध्ये सुरुवातीचा क्रम ड्रॉने ठरतो. संशोधक यादृच्छिक नमुने निवडतात, जेणेकरून त्यांचे निष्कर्ष स्वेच्छेने सहभागी झालेल्या लोकांपुरते मर्यादित राहू नयेत. डेव्हलपर्स चाचणी डेटा तयार करतात, सिम्युलेशनसाठी एक सुरुवातीची व्हॅल्यू (seed) ठरवतात, आणि QA दरम्यान आयडेंटिफायर्स निवडतात. या सर्वांमध्ये समान धागा आहे तो म्हणजे एक यादृच्छिक निवड प्रक्रिया, जी नंतर स्पष्ट करता येते: कारण हा ड्रॉ क्रिप्टोग्राफिक यादृच्छिकता वापरतो आणि पूर्णपणे तुमच्या डिव्हाइसवर घडतो, त्यामुळे कोणी प्रश्न उपस्थित केल्यास तुम्ही निकाल कसा तयार झाला हे दाखवू शकता.

या जनरेटरला काही प्रामाणिक मर्यादा आहेत, ज्या जाणून घेणे गरजेचे आहे. 'पुनरावृत्ती टाळा' मोड श्रेणीत असलेल्या संख्यांपेक्षा जास्त संख्या तयार करू शकत नाही: १ आणि १० यांच्यामध्ये वीस युनिक व्हॅल्यूज मुळातच अस्तित्वात नाहीत. ड्रॉ स्वतंत्र असतात, आणि आधीचे निकाल पुढच्या निकालांवर परिणाम करत नाहीत, त्यामुळे पेज रिफ्रेश केल्याने कोणतेही चक्र पुन्हा सुरू होत नाही — कारण असे कोणतेही चक्र नाहीच, ज्यात तुम्ही असाल. आणि संख्या क्रिप्टोग्राफिक दृष्ट्या मजबूत असल्या तरी, इथला ड्रॉ म्हणजे भाकीत नसून एक निष्पक्ष निवड आहे: अधिकृत लॉटरी ड्रॉ स्वतःची भौतिक किंवा प्रमाणित उपकरणे वापरतात, आणि तुमच्या ब्राउझरमध्ये केलेल्या कोणत्याही गणनेचा त्यांच्याशी काहीही संबंध नाही. या मर्यादांच्या आत हमी मजबूत राहते: तुमच्या श्रेणीतील प्रत्येक संख्येला प्रत्येक वेगळ्या ड्रॉमध्ये अगदी सारखी संधी असते.

FAQ

यादृच्छिकता क्रिप्टोग्राफिक दृष्ट्या सुरक्षित आहे का?

तुमच्या ब्राउझरचे Web Crypto API (crypto.getRandomValues) वापरले जाते, जे तुमच्या ऑपरेटिंग प्रणालीच्या क्रिप्टोग्राफिक दृष्ट्या सुरक्षित स्रोतातून यादृच्छिकता घेते. साध्या स्यूडो-यादृच्छिक फंक्शन्सपेक्षा वेगळे, याचे आउटपुट प्रत्यक्षात अनपेक्षित असण्यासाठी डिझाइन केलेले आहे, आणि rejection sampling सर्वात लहान व्हॅल्यूजना झुकते माप न देता श्रेणीतील प्रत्येक संख्येसाठी समान शक्यता राखते.

विशिष्ट श्रेणीत यादृच्छिक संख्या कशी तयार करावी?

सर्वात लहान शक्य व्हॅल्यू 'किमान' बॉक्समध्ये आणि सर्वात मोठी 'कमाल' बॉक्समध्ये टाका, नंतर 'तयार करा' वर क्लिक करा. दोन्ही टोके निकालात समाविष्ट असतात, त्यामुळे १ ते १० ही श्रेणी १ आणि १० दोन्ही तयार करू शकते.

मी एकाच वेळी अनेक यादृच्छिक संख्या तयार करू शकतो का?

होय. 'निवडीची संख्या' तुमच्या गरजेनुसार ठेवा (१००० पर्यंत), आणि जनरेटर एका क्लिकवर संपूर्ण यादी तयार करेल. त्यानंतर तुम्ही कॉपी बटणाने सर्व निकाल क्लिपबोर्डवर कॉपी करू शकता, किंवा फाइलमध्ये सेव्ह करू शकता.

मी एकाच वेळी संख्यांचे अनेक संच तयार करू शकतो का?

होय. 'आउटपुट स्वरूप' 'नवीन ओळ' वरून 'स्पेसने विभक्त' किंवा 'स्वल्पविरामाने विभक्त' असे बदला, म्हणजे 'संचांची संख्या' हा बॉक्स दिसेल. तो तुमच्या गरजेनुसार स्वतंत्र ड्रॉच्या संख्येवर ठेवा — जसे की वीस ड्रॉ फेऱ्यांसाठी प्रत्येकी ३ संख्यांचे वीस संच — आणि वेगवेगळ्या संचांमध्ये पुनरावृत्ती होऊ शकते का ते ठरवा.

मी तयार झालेल्या संख्या क्रमवारी लावू शकतो का?

होय. प्रत्येक यादी चढत्या किंवा उतरत्या क्रमाने लावण्यासाठी 'क्रमवारी' हा पर्याय वापरा, किंवा संख्या ज्या क्रमाने तयार झाल्या त्याच क्रमात ठेवण्यासाठी तो 'काहीही नाही' वर सोडा.

पुनरावृत्त संख्या कशा टाळाव्यात?

'पुनरावृत्ती टाळा' स्विच चालू करा. हा चालू असताना, यादीतील प्रत्येक तयार झालेली संख्या वेगळी असते — हे ड्रॉ, बक्षिसांचे ड्रॉ, किंवा लोकांना गटांमध्ये विभागण्यासाठी अगदी योग्य आहे. लक्षात ठेवा की 'निवडीची संख्या' श्रेणीच्या आकारापेक्षा जास्त असू शकत नाही: तुम्ही १ आणि १० यांच्यामध्ये २० युनिक संख्या तयार करू शकत नाही.

एकच संख्या वारंवार का येत राहते?

कारण स्वतंत्र ड्रॉमध्ये पुनरावृत्ती होऊ शकते आणि हेच यादृच्छिकतेचे स्वरूप आहे. प्रत्येक ड्रॉ आधीच्या सर्व ड्रॉंकडे पूर्णपणे दुर्लक्ष करतो, त्यामुळे १ ते १० या श्रेणीत एकच संख्या सलग दोनदा येण्याची शक्यता प्रत्येक वेळी १० पैकी १ असते — हे सामान्य आहे, बिघाड नाही. जर तुम्हाला पुनरावृत्तीविरहित यादी हवी असेल, तर 'पुनरावृत्ती टाळा' चालू करा; हे कोणतीही चूक दुरुस्त करत नाही, तर मुद्दाम ड्रॉ मर्यादित करते.

यादृच्छिक क्रम यादृच्छिक का दिसत नाही?

कारण खरी यादृच्छिकता अनपेक्षित असते, समान रीतीने पसरलेली नसते. लोकांना वाटते की यादृच्छिक निकाल नीटनेटका पसरलेला असेल, त्यामुळे गुच्छ, पुनरावृत्ती, आणि ७, ७, ८ सारखे छोटे क्रम चुकीचे वाटतात, जरी हेच प्रत्यक्षात यादृच्छिकता तयार करते. जो क्रम एखाद्या माणसाला नीटनेटका वाटतो, तो सहसा यादृच्छिक नसतो.

मी ब्राउझरमध्ये तयार झालेल्या यादृच्छिकतेवर विश्वास ठेवू शकतो का?

होय, जेव्हा ती Web Crypto API कडून येते, जसे इथे होते. crypto.getRandomValues ब्राउझरच्या अंतर्गत प्रणालीकडून मिळणाऱ्या यादृच्छिकतेचा वापर करून क्रिप्टोग्राफिक दृष्ट्या मजबूत यादृच्छिक व्हॅल्यूज देते, Math.random() सारख्या JavaScript PRNG कडून नाही. खरोखर महत्त्वाच्या कोणत्याही गोष्टीसाठी Math.random() वर विश्वास ठेवू नका: ते निश्चित (deterministic) आहे, आणि अनपेक्षित असण्यासाठी कधीच डिझाइन केलेले नाही.

यादृच्छिक संख्यांचा अंदाज लावता येतो का किंवा त्यांच्यावर परिणाम करता येतो का?

इथे नाही. व्हॅल्यूज तुमच्या ऑपरेटिंग प्रणालीच्या क्रिप्टोग्राफिक दृष्ट्या सुरक्षित जनरेटरकडून येतात, त्यामुळे आधीचे निकाल पाहूनही पुढच्याबद्दल काहीही समजत नाही, आणि ड्रॉ पूर्णपणे तुमच्या डिव्हाइसवर होतो — यात हस्तक्षेप करण्यासाठी कोणताही सर्व्हर नाही, आणि मध्ये पकडण्यासाठी कोणतीही विनंती नाही. आम्हीही तुमच्या निकालांवर परिणाम करू शकत नाही, कारण आम्ही ते कधीच पाहत नाही.

गिवअवे किंवा रॅफलचे विजेते निवडण्यासाठी हे योग्य आहे का?

होय. प्रत्येक सहभागीला एक संख्या द्या, त्या श्रेणीत एक निकाल तयार करा, आणि ज्या सहभागीची संख्या जुळते तो जिंकतो. स्रोत क्रिप्टोग्राफिक दृष्ट्या सुरक्षित असल्याने आणि ड्रॉ पूर्णपणे तुमच्या डिव्हाइसवर होत असल्याने, एखाद्या सहभागीने निकालावर प्रश्न उपस्थित केल्यास प्रक्रिया समजावून सांगणे आणि तिचे दस्तऐवजीकरण करणे सोपे आहे. जर तुम्ही लॉटरी तिकिटासाठी संख्या निवडत असाल, तर हे टूल एक यादृच्छिक निवडीचे साधन म्हणून काम करते, भाकीत म्हणून नाही: अधिकृत लॉटरी ड्रॉशी याचा काहीही संबंध नसतो.

पेज रिफ्रेश केल्याने यादृच्छिकता बदलते का?

नाही, आणि याची गरजही नाही. प्रत्येक ड्रॉ आधीच ऑपरेटिंग प्रणालीकडून नवीन यादृच्छिक व्हॅल्यूज मागतो, त्यामुळे निकाल स्वतंत्रच राहतात, तुम्ही 'तयार करा' वर सलग दहा वेळा क्लिक केले तरी किंवा प्रत्येक क्लिकमध्ये पेज रीलोड केले तरी. पुन्हा सुरू करावे लागणारे कोणतेही चक्र नाही, आणि कालबाह्य होणारी कोणतीही स्थिती नाही — रिफ्रेश केल्याने फक्त स्क्रीनवर दाखवलेले निकाल पुसले जातात.

हा जनरेटर मोफत आहे का, आणि तुम्ही माझ्या संख्या सेव्ह करता का?

हे टूल पूर्णपणे मोफत आहे आणि यासाठी साइन-अपची गरज नाही. सर्व संख्या तुमच्या ब्राउझरमध्येच स्थानिक पातळीवर तयार होतात आणि तुमचे डिव्हाइस कधीच सोडत नाहीत, त्यामुळे इच्छा असूनही आम्ही तुमचे निकाल सेव्ह किंवा पाहू शकत नाही.