रैंडम नंबर और स्ट्रिंग जनरेटर
किसी रेंज में बिना दोहराव के रैंडम नंबर बनाएं, या अक्षरों, अंकों और चिह्नों से रैंडम स्ट्रिंग। सब कुछ crypto.getRandomValues से बनता है।
रैंडम नंबर और स्ट्रिंग कैसे जनरेट करें
- 1
नंबर या स्ट्रिंग चुनें
नंबरों की रेंज (पूर्णांक या दशमलव) और रैंडम स्ट्रिंग के बीच स्विच करें। स्ट्रिंग उन्हीं तरह के कैरेक्टर से बनती है, जो आप चुनते हैं।
- 2
रेंज या कैरेक्टर सेट तय करें
नंबरों के लिए न्यूनतम और अधिकतम वैल्यू तय करें, और यह भी कि दोहराव चलेगा या नहीं। स्ट्रिंग के लिए कैरेक्टर के प्रकार चालू या बंद करें, या अपना खुद का कैरेक्टर सेट पेस्ट करें।
- 3
जनरेट करें और परिणाम कॉपी करें
एक बार में 10,000 तक वैल्यू दिखती हैं, हर पंक्ति में एक, सीधे क्लिपबोर्ड में कॉपी करने के लिए तैयार।
Math.random की जगह crypto.getRandomValues क्यों
JavaScript का Math.random तेज है, पर उसे कभी इसलिए नहीं बनाया गया कि उसका अगला नतीजा भांपा न जा सके। कुछ इंजनों में उसके चंद आउटपुट से ही उसकी अंदरूनी स्थिति दोबारा बनाई जा सकती है, और फिर आगे आने वाली हर वैल्यू का अंदाजा लगाया जा सकता है। crypto.getRandomValues इसकी जगह ऑपरेटिंग सिस्टम के क्रिप्टोग्राफिक रूप से सुरक्षित जनरेटर से नंबर लेता है। यह वही स्रोत है, जिससे ब्राउजर एन्क्रिप्शन की कुंजियां बनाते हैं, इसलिए क्रम को देखकर उसके बारे में कुछ भी अनुमान नहीं लगाया जा सकता। यह टूल हर जगह इसी स्रोत का इस्तेमाल करता है, तब भी, जब दोहराव बंद होने पर सूची को शफल किया जाता है।
मॉड्यूलो बायस, और रिजेक्शन सैंपलिंग उसे कैसे हटाती है
किसी रैंडम 32-बिट नंबर को “1 से 100 तक की वैल्यू” में बदलने का सीधा तरीका है उसका मॉड्यूलो 100 लेना। पर यह चुपचाप रेंज के निचले हिस्से की ओर झुक जाता है: 2^32 पूरी तरह 100 से नहीं बंटता, इसलिए पूरे गुणज में न समाने वाली बची हुई वैल्यू कुछ गिने-चुने परिणामों पर ही जा गिरती हैं। यह टूल इसकी जगह हर उस ड्रॉ को फेंक देता है, जो इस असमान बचे हुए हिस्से में पड़ता है, और फिर से कोशिश करता है। इसे रिजेक्शन सैंपलिंग कहते हैं। इससे मांगी गई रेंज के हर नंबर के आने की संभावना बिल्कुल बराबर रहती है।
हर वैल्यू इसी टैब में बनती है
नंबर और स्ट्रिंग पूरी तरह आपके ब्राउजर में Web Crypto API से बनते हैं। आप जो भी बनाते हैं, वह न सर्वर पर भेजा जाता है, न ब्राउजर स्टोरेज में लिखा जाता है। शेयर करने वाले लिंक में सिर्फ आपकी सेटिंग रहती है, असली वैल्यू कभी नहीं: जिस लिंक से नतीजा पहले से पता चल जाए, वह रैंडम ड्रॉ का मतलब ही खत्म कर देगा।
अक्सर पूछे जाने वाले सवाल
Math.random से crypto.getRandomValues बेहतर क्यों है?
Math.random रफ्तार के लिए बना है, अनिश्चितता के लिए नहीं। कई JavaScript इंजनों में दिखाया जा चुका है कि उसके थोड़े-से नतीजों से उसका आउटपुट दोबारा बनाया जा सकता है। crypto.getRandomValues ऑपरेटिंग सिस्टम के क्रिप्टोग्राफिक रूप से सुरक्षित रैंडम नंबर जनरेटर से नंबर लेता है, जिसमें ऐसा कोई शॉर्टकट नहीं है।
बड़ी रेंज में “बिना दोहराव” कैसे काम करता है?
50 लाख तक संभावित वैल्यू वाली रेंज में यह टूल पूरी सूची को Fisher-Yates शफल से मिलाता है और उतनी वैल्यू ले लेता है, जितनी आपने मांगी हैं। इससे बड़ी रेंज में यह एक-एक करके वैल्यू निकालता है और सिर्फ नई वैल्यू रखता है। यह तरीका तेज रहता है, क्योंकि जब आप रेंज से बहुत कम वैल्यू मांगते हैं, तो टकराव बहुत कम होते हैं।
मॉड्यूलो बायस क्या है, और यह सिर्फ % रेंज क्यों नहीं है?
किसी रैंडम 32-बिट नंबर को सीधे शेषफल वाले ऑपरेशन से छोटा करने पर आपकी रेंज का निचला हिस्सा थोड़ा-सा ज्यादा बार आता है, क्योंकि 2^32 ज्यादातर रेंज साइज का पूरा गुणज नहीं है। यह टूल उन थोड़ी-सी वैल्यू को फेंककर दोबारा निकालता है, जो यह झुकाव पैदा करतीं, इसलिए आपकी रेंज का हर परिणाम बराबर संभावना से आता है।
क्या परिणाम को पासवर्ड की तरह इस्तेमाल कर सकते हैं?
यहां बड़े कैरेक्टर सेट और काफी लंबाई से बनी रैंडम स्ट्रिंग उतनी ही मजबूत है, जितना किसी अलग जनरेटर से बना पासवर्ड। अगर आपको खास तौर पर एंट्रॉपी के आंकड़े, मजबूती का स्कोर या पासफ्रेज चाहिए, तो उसके लिए “पासवर्ड जनरेटर” बना है।
एक बार में कितने नंबर या स्ट्रिंग बना सकते हैं?
एक बैच में 10,000 तक, चाहे नंबर बनाएं या स्ट्रिंग। लकी ड्रॉ, टेस्ट डेटा और सैंपलिंग के लिए यह काफी है, और टूल को बार-बार चलाने की जरूरत नहीं पड़ती।
क्या बनाई गई वैल्यू कभी मेरे ब्राउजर से बाहर जाती हैं?
नहीं। हर नंबर और हर कैरेक्टर Web Crypto API से यहीं आपके डिवाइस पर बनता है, और कुछ भी कहीं अपलोड नहीं होता। वैल्यू पेज से बाहर सिर्फ क्लिपबोर्ड में कॉपी करने पर जाती है, और यह पूरी तरह आपके हाथ में है।
शेयर करने वाले लिंक में असली नंबर क्यों नहीं होते?
लिंक सिर्फ आपकी सेटिंग दोबारा खोलता है (रेंज, गिनती, दोहराव की अनुमति है या नहीं), वैल्यू खुद कभी नहीं। जो लिंक मांगने पर वही “रैंडम” नंबर दोबारा दिखा दे, वह उन्हें पहले से पता चलने लायक बना देगा, और इस तरह नंबर बनाने का मकसद ही खत्म हो जाएगा।