Random Number Generator (cryptographically secure, unique mode)
Cryptographically secure random integers generate करने के लिए min, max, और count चुनें। 'Unique' toggle करें sample-without-replacement के लिए (raffles, lotteries)।
कैसे काम करता है
यह actually random क्यों है
हम Math.random() के बजाय crypto.getRandomValues — browser का cryptographically secure random source — उपयोग करते हैं। CSPRNG output prior values से predict नहीं किया जा सकता, जो lottery picks, gambling-adjacent applications, और किसी भी use के लिए मायने रखता है जहाँ 'random' एक real requirement है।
हम uniform distribution को exactly chosen range के across ensure करने के लिए rejection sampling भी उपयोग करते हैं। Naive 'random % range' bias introduce करता है जब range 2³² में evenly divide नहीं होती। Rejection sampling उन values को discard करता है जो bias cause करेंगे और retry करता है, इसलिए आपकी range में हर number की exactly same probability है।
Unique बनाम duplicate-allowed
Default mode: प्रत्येक number independent है — duplicates हो सकते हैं। यही casual use में 'random' का मतलब है (dice rolling, movie picking, randomized testing)।
Unique mode: replacement के बिना sample — एक बार number pick होने के बाद, यह same batch में फिर pick नहीं हो सकता। उपयोगी: lottery picks (जैसे 1-49 से 6 numbers), raffles (winners draw करना), team assignments, और कोई भी 'pick N from M' situation। Count ≤ range की आवश्यकता है।
Common use cases
Lottery / raffle: 1-49 से 6 unique numbers, या आपका draw जो भी उपयोग करे। 'Unique' on toggle करें।
Dice rolls: range 1-6 (या D20 के लिए 1-20)। 'Unique' off छोड़ें ताकि प्रत्येक roll independent हो।
Testing के लिए random sampling: spot-check करने के लिए 1-10000 से 10 random user IDs pick करें। Duplicates avoid करने के लिए 'Unique' उपयोग करें।
Coin flips simulate करना: range 0-1, multiple results। Fairness checks के लिए heads/tails tally करें (बड़े samples पर ~50/50 देखेंगे)।
अक्सर पूछे जाने वाले प्रश्न
›क्या यह raffles या lotteries के लिए fair है?
Randomness cryptographically secure और unbiased है। क्या यह officially 'fair' है यह आपके jurisdiction के rules पर निर्भर करता है — कई certified hardware RNGs require करते हैं।
›Math.random() से क्या अंतर है?
Math.random() एक ऐसा algorithm उपयोग करता है जिसका output attacker prior outputs से predict कर सकता है। crypto.getRandomValues OS-level cryptographic RNG उपयोग करता है जो predict नहीं किया जा सकता।
›क्या मैं negative numbers पा सकता हूँ?
हाँ। Min को negative value पर set करें।
›Maximum range क्या है?
JavaScript के safe integer range (~2⁵³) द्वारा limited, लेकिन practically आप बिना trouble के billions तक जा सकते हैं।
›जब count > range हो तो 'unique' fail क्यों होता है?
यदि आप 1-5 से 10 unique numbers pick करते हैं, चार exist नहीं करते। Validation यह catch करती है और range wide करने या count reduce करने के लिए कहती है।
›क्या यह dice rolls के लिए काम करता है?
हाँ — range 1-6 (या आपके dice जो भी हों) set करें और 'unique' off करें ताकि प्रत्येक roll independent हो।
›क्या मैं seed save करके reproduce कर सकता हूँ?
नहीं — design से secure random में seed नहीं होता। यदि testing के लिए reproducible 'random' चाहिए, seeded PRNG library उपयोग करें।
›क्या data कहीं भेजा जाता है?
नहीं। Generation पूरी तरह local है।
संबंधित टूल्स
अंतिम अपडेट: