ਰੈਂਡਮ ਨੰਬਰ ਜਨਰੇਟਰ ਕੀ ਹੈ?

ਇੱਕ ਰੈਂਡਮ ਨੰਬਰ ਜਨਰੇਟਰ (RNG) ਇੱਕ ਅਜਿਹਾ ਸਿਸਟਮ ਹੈ ਜੋ ਬੇਤਰਤੀਬ ਜਾਂ ਸੂਡੋ-ਰੈਂਡਮ ਨੰਬਰ ਤਿਆਰ ਕਰਦਾ ਹੈ। ਅਗਲੇ ਨੰਬਰ ਦਾ ਅਸਲ ਵਿੱਚ ਅੰਦਾਜ਼ਾ ਲਗਾਇਆ ਜਾ ਸਕਦਾ ਹੈ ਜਾਂ ਨਹੀਂ, ਇਹ ਜਨਰੇਟਰ ਦੀ ਕਿਸਮ 'ਤੇ ਨਿਰਭਰ ਕਰਦਾ ਹੈ। ਕੁਝ ਜਨਰੇਟਰ ਕਿਸੇ ਭੌਤਿਕ ਪ੍ਰਕਿਰਿਆ 'ਤੇ ਅਧਾਰਤ ਹੁੰਦੇ ਹਨ, ਕੁਝ ਆਪਣੇ ਨੰਬਰ ਇੱਕ ਐਲਗੋਰਿਦਮ ਨਾਲ ਗਿਣਦੇ ਹਨ, ਅਤੇ ਕੁਝ ਐਲਗੋਰਿਦਮ ਇਸ ਤਰ੍ਹਾਂ ਬਣਾਏ ਜਾਂਦੇ ਹਨ ਕਿ ਜਿਸਨੇ ਉਹਨਾਂ ਦੇ ਨਤੀਜੇ ਦੇਖੇ ਹੋਣ, ਉਹ ਵੀ ਇਹ ਅੰਦਾਜ਼ਾ ਨਹੀਂ ਲਗਾ ਸਕਦਾ ਕਿ ਅੱਗੇ ਕੀ ਆਵੇਗਾ। ਬੇਤਰਤੀਬ ਦਿਖਣਾ ਅਤੇ ਅਣਕਿਆਸਾ ਹੋਣਾ ਦੋ ਵੱਖਰੇ ਗੁਣ ਹਨ, ਅਤੇ ਇਸ ਲੇਖ ਦਾ ਜ਼ਿਆਦਾਤਰ ਹਿੱਸਾ ਇਸੇ ਫਰਕ ਬਾਰੇ ਹੈ।

ਹਾਰਡਵੇਅਰ ਰੈਂਡਮ ਨੰਬਰ ਜਨਰੇਟਰ

ਇੱਕ ਹਾਰਡਵੇਅਰ ਰੈਂਡਮ ਨੰਬਰ ਜਨਰੇਟਰ (HRNG), ਜਿਸਨੂੰ ਟਰੂ ਰੈਂਡਮ ਨੰਬਰ ਜਨਰੇਟਰ (TRNG) ਵੀ ਕਿਹਾ ਜਾਂਦਾ ਹੈ, ਆਪਣੇ ਨੰਬਰ ਕਿਸੇ ਭੌਤਿਕ ਪ੍ਰਕਿਰਿਆ ਤੋਂ ਪ੍ਰਾਪਤ ਕਰਦਾ ਹੈ। ਸਭ ਤੋਂ ਪੁਰਾਣੇ ਜਨਰੇਟਰ ਸਾਡੀਆਂ ਅੱਖਾਂ ਸਾਹਮਣੇ ਕੰਮ ਕਰਦੇ ਹਨ: ਉਛਾਲਿਆ ਗਿਆ ਸਿੱਕਾ, ਸੁੱਟਿਆ ਗਿਆ ਪਾਸਾ, ਰੂਲੇਟ ਦਾ ਪਹੀਆ। ਮਕੈਨਿਕਸ ਇਹਨਾਂ ਵਿੱਚੋਂ ਹਰੇਕ ਦਾ ਪੂਰਾ ਵਰਣਨ ਕਰਦਾ ਹੈ, ਫਿਰ ਵੀ ਚੰਗੀ ਤਰ੍ਹਾਂ ਬਣਿਆ ਪਹੀਆ ਅਭਿਆਸ ਵਿੱਚ ਅਣਕਿਆਸਾ ਰਹਿੰਦਾ ਹੈ, ਕਿਉਂਕਿ ਹਰ ਘੁਮਾਅ ਦੀ ਸ਼ੁਰੂਆਤ ਵਿੱਚ ਛੋਟੇ-ਛੋਟੇ ਫਰਕ ਬਿਲਕੁਲ ਵੱਖਰੇ ਨਤੀਜਿਆਂ ਵਿੱਚ ਬਦਲ ਜਾਂਦੇ ਹਨ।

ਆਧੁਨਿਕ ਹਾਰਡਵੇਅਰ ਜਨਰੇਟਰ ਇਸਦੀ ਬਜਾਏ ਸੂਖਮ ਵਰਤਾਰੇ ਮਾਪਦੇ ਹਨ: ਇਲੈਕਟ੍ਰਾਨਿਕ ਸਰਕਟਾਂ ਵਿੱਚ ਸ਼ਾਟ ਸ਼ੋਰ ਅਤੇ ਥਰਮਲ ਸ਼ੋਰ, ਵਾਯੂਮੰਡਲ ਦਾ ਸ਼ੋਰ, ਕੁਆਂਟਮ ਪ੍ਰਭਾਵ। ਇਹ ਐਂਟਰੌਪੀ — ਅਜਿਹੀ ਅਣਕਿਆਸਤਾ ਜਿਸਨੂੰ ਮਾਪਿਆ ਜਾ ਸਕਦਾ ਹੈ — ਦੇ ਚੰਗੇ ਸਰੋਤ ਹਨ, ਪਰ ਇੱਕ ਭੌਤਿਕ ਸਰੋਤ ਕੁਦਰਤੀ ਤੌਰ 'ਤੇ ਸੰਪੂਰਨ ਨਹੀਂ ਹੁੰਦਾ: ਇਸ ਵਿੱਚ ਪੱਖਪਾਤ ਹੋ ਸਕਦਾ ਹੈ, ਇਹ ਬਦਲ ਸਕਦਾ ਹੈ ਅਤੇ ਅਸਫਲ ਹੋ ਸਕਦਾ ਹੈ, ਇਸ ਲਈ ਇਸਦੀ ਗੁਣਵੱਤਾ ਦਾ ਮੁਲਾਂਕਣ ਅਤੇ ਨਿਗਰਾਨੀ ਕਰਨੀ ਪੈਂਦੀ ਹੈ, ਅਤੇ ਲੋੜ ਪੈਣ 'ਤੇ ਇਸਦੇ ਨਤੀਜਿਆਂ 'ਤੇ ਹੋਰ ਪ੍ਰਕਿਰਿਆ ਕਰਨੀ ਪੈਂਦੀ ਹੈ, ਜਿਵੇਂ ਕਿ NIST SP 800-90B ਵਰਗੇ ਮਾਪਦੰਡ ਦੱਸਦੇ ਹਨ। ਹਾਰਡਵੇਅਰ ਸਰੋਤਾਂ ਦੀ ਵਰਤੋਂ ਉੱਥੇ ਕੀਤੀ ਜਾਂਦੀ ਹੈ ਜਿੱਥੇ ਗਾਰੰਟੀ ਸਭ ਤੋਂ ਵੱਧ ਮਾਇਨੇ ਰੱਖਦੀ ਹੈ — ਖਾਸ ਕਰਕੇ ਕ੍ਰਿਪਟੋਗ੍ਰਾਫੀ ਵਿੱਚ, ਜਿੱਥੇ ਉਹ ਟਰਾਂਸਪੋਰਟ ਲੇਅਰ ਸਿਕਿਓਰਿਟੀ (TLS) ਵਰਗੇ ਪ੍ਰੋਟੋਕੋਲਾਂ ਦੇ ਪਿੱਛੇ ਦੀਆਂ ਕੁੰਜੀਆਂ ਲਈ ਅਣਕਿਆਸੀ ਸ਼ੁਰੂਆਤੀ ਸਮੱਗਰੀ ਪ੍ਰਦਾਨ ਕਰਦੇ ਹਨ।

ਸੂਡੋ-ਰੈਂਡਮ ਨੰਬਰ ਜਨਰੇਟਰ

ਇੱਕ ਭੌਤਿਕ ਉਪਕਰਨ ਦਾ ਬਦਲ ਇੱਕ ਐਲਗੋਰਿਦਮ ਹੈ। ਇੱਕ ਸੂਡੋ-ਰੈਂਡਮ ਨੰਬਰ ਜਨਰੇਟਰ (PRNG) ਇੱਕ ਅਜਿਹਾ ਕ੍ਰਮ ਤਿਆਰ ਕਰਦਾ ਹੈ ਜੋ ਬੇਤਰਤੀਬ ਲੱਗਦਾ ਹੈ, ਪਰ ਪੂਰੀ ਤਰ੍ਹਾਂ ਇੱਕ ਸ਼ੁਰੂਆਤੀ ਮੁੱਲ ਦੁਆਰਾ ਨਿਰਧਾਰਤ ਹੁੰਦਾ ਹੈ, ਜਿਸਨੂੰ ਸੀਡ (seed) ਕਿਹਾ ਜਾਂਦਾ ਹੈ। ਇੱਕੋ ਐਲਗੋਰਿਦਮ ਨੂੰ ਇੱਕੋ ਸੀਡ ਦਿਓ ਅਤੇ ਤੁਹਾਨੂੰ ਹਰ ਵਾਰ ਇੱਕੋ ਕ੍ਰਮ ਮਿਲੇਗਾ। ਇਹ ਉੱਥੇ ਇੱਕ ਕਮਜ਼ੋਰੀ ਹੈ ਜਿੱਥੇ ਨਤੀਜਾ ਅਣਕਿਆਸਾ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ ਅਤੇ ਸੀਡ ਜਾਂ ਅੰਦਰੂਨੀ ਸਥਿਤੀ ਦਾ ਅੰਦਾਜ਼ਾ ਲਗਾਇਆ ਜਾਂ ਉਸਨੂੰ ਮੁੜ ਬਣਾਇਆ ਜਾ ਸਕਦਾ ਹੈ, ਅਤੇ ਉੱਥੇ ਇੱਕ ਖੂਬੀ ਹੈ ਜਿੱਥੇ ਨਤੀਜਾ ਦੁਹਰਾਉਣਯੋਗ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ — ਕੋਈ ਸਿਮੂਲੇਸ਼ਨ ਜਾਂ ਟੈਸਟ ਬਿਲਕੁਲ ਉਸੇ ਤਰ੍ਹਾਂ ਦੁਬਾਰਾ ਚਲਾਇਆ ਜਾ ਸਕਦਾ ਹੈ। PRNG ਤੇਜ਼, ਸਸਤੇ ਅਤੇ ਲਾਗੂ ਕਰਨ ਵਿੱਚ ਆਸਾਨ ਵੀ ਹੁੰਦੇ ਹਨ, ਇਸੇ ਕਰਕੇ ਜ਼ਿਆਦਾਤਰ ਸਾਫਟਵੇਅਰ ਇਹਨਾਂ 'ਤੇ ਨਿਰਭਰ ਕਰਦੇ ਹਨ। ਜਾਣੇ-ਪਛਾਣੇ ਪਰਿਵਾਰਾਂ ਵਿੱਚ ਲੀਨੀਅਰ ਕਾਂਗਰੂਐਂਸ਼ੀਅਲ ਜਨਰੇਟਰ (LCG), xorshift ਜਨਰੇਟਰ ਅਤੇ Mersenne Twister ਸ਼ਾਮਲ ਹਨ।

Mersenne Twister

Mersenne Twister, ਜਿਸਨੂੰ 1997 ਵਿੱਚ ਮਾਕੋਤੋ ਮਾਤਸੁਮੋਤੋ (Makoto Matsumoto) ਅਤੇ ਤਾਕੁਜੀ ਨਿਸ਼ੀਮੁਰਾ (Takuji Nishimura) ਦੁਆਰਾ ਪ੍ਰਕਾਸ਼ਿਤ ਕੀਤਾ ਗਿਆ ਸੀ, ਸਭ ਤੋਂ ਵੱਧ ਵਰਤੇ ਜਾਣ ਵਾਲੇ ਸੂਡੋ-ਰੈਂਡਮ ਨੰਬਰ ਜਨਰੇਟਰਾਂ ਵਿੱਚੋਂ ਇੱਕ ਹੈ ਅਤੇ ਕਈ ਪ੍ਰੋਗਰਾਮਿੰਗ ਭਾਸ਼ਾਵਾਂ ਵਿੱਚ ਮੂਲ ਹੈ। ਇਸਦਾ ਨਾਮ ਇਸਦੀ ਮਿਆਦ ਤੋਂ ਆਇਆ ਹੈ — ਯਾਨੀ ਦੁਹਰਾਓ ਤੋਂ ਪਹਿਲਾਂ ਕ੍ਰਮ ਦੀ ਲੰਬਾਈ — ਜੋ ਕਿ ਇਸਦੇ ਮਿਆਰੀ ਰੂਪ, MT19937 ਵਿੱਚ, ਮਰਸੈਨ ਪ੍ਰਾਈਮ 219937 − 1 ਹੈ। ਇਹ ਰੈਂਡਮਨੈੱਸ ਦੇ ਜ਼ਿਆਦਾਤਰ ਅੰਕੜਾਤਮਕ ਟੈਸਟਾਂ ਨੂੰ ਪਾਸ ਕਰਦਾ ਹੈ ਅਤੇ ਸਿਮੂਲੇਸ਼ਨਾਂ ਲਈ ਚੰਗੀ ਤਰ੍ਹਾਂ ਢੁਕਵਾਂ ਹੈ। ਹਾਲਾਂਕਿ, ਇਸਨੂੰ ਭੇਦ ਗੁਪਤ ਰੱਖਣ ਲਈ ਤਿਆਰ ਨਹੀਂ ਕੀਤਾ ਗਿਆ ਸੀ: ਲਗਾਤਾਰ 624 32-ਬਿੱਟ ਨਤੀਜਿਆਂ ਤੋਂ ਕੋਈ ਵੀ ਇਸਦੀ ਅੰਦਰੂਨੀ ਸਥਿਤੀ ਦਾ ਪਤਾ ਲਗਾ ਸਕਦਾ ਹੈ ਅਤੇ ਅੱਗੇ ਆਉਣ ਵਾਲੇ ਹਰ ਮੁੱਲ ਦੀ ਭਵਿੱਖਬਾਣੀ ਕਰ ਸਕਦਾ ਹੈ, ਇਸ ਲਈ ਇਸਦੀ ਵਰਤੋਂ ਕੁੰਜੀਆਂ, ਪਾਸਵਰਡਾਂ ਜਾਂ ਕਿਸੇ ਵੀ ਅਜਿਹੀ ਚੀਜ਼ ਲਈ ਨਹੀਂ ਕੀਤੀ ਜਾਣੀ ਚਾਹੀਦੀ ਜਿਸਦਾ ਅਣਕਿਆਸਾ ਰਹਿਣਾ ਜ਼ਰੂਰੀ ਹੈ।

ਕ੍ਰਿਪਟੋਗ੍ਰਾਫਿਕ ਤੌਰ 'ਤੇ ਸੁਰੱਖਿਅਤ ਜਨਰੇਟਰ ਅਤੇ ਐਂਟਰੌਪੀ

ਕਈ ਐਪਲੀਕੇਸ਼ਨਾਂ ਨੂੰ ਇੱਕੋ ਸਮੇਂ ਦੋਵਾਂ ਚੀਜ਼ਾਂ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ: ਇੱਕ ਐਲਗੋਰਿਦਮ ਦੀ ਗਤੀ ਅਤੇ ਇੱਕ ਭੌਤਿਕ ਸਰੋਤ ਦੀ ਅਣਕਿਆਸਤਾ। ਇਸਦਾ ਜਵਾਬ ਇੱਕ ਕ੍ਰਿਪਟੋਗ੍ਰਾਫਿਕ ਤੌਰ 'ਤੇ ਸੁਰੱਖਿਅਤ ਸੂਡੋ-ਰੈਂਡਮ ਨੰਬਰ ਜਨਰੇਟਰ (CSPRNG) ਹੈ। ਇਹ ਵੀ ਇੱਕ PRNG ਹੀ ਹੈ, ਪਰ ਇਸ ਤਰ੍ਹਾਂ ਬਣਾਇਆ ਗਿਆ ਹੈ ਕਿ ਇਸਦੇ ਨਤੀਜਿਆਂ ਦਾ ਇੱਕ ਹਿੱਸਾ ਦੇਖਣ ਨਾਲ ਬਾਕੀ ਹਿੱਸੇ ਦਾ ਅੰਦਾਜ਼ਾ ਲਗਾਉਣ ਦਾ ਕੋਈ ਵਿਹਾਰਕ ਤਰੀਕਾ ਨਹੀਂ ਮਿਲਦਾ, ਅਤੇ ਇਸਨੂੰ ਅਸਲ ਐਂਟਰੌਪੀ ਦੇ ਸਰੋਤ ਤੋਂ ਸ਼ੁਰੂਆਤੀ ਮੁੱਲ ਦਿੱਤਾ ਜਾਂਦਾ ਹੈ ਅਤੇ ਨਿਯਮਿਤ ਤੌਰ 'ਤੇ ਦੁਬਾਰਾ ਸ਼ੁਰੂਆਤੀ ਮੁੱਲ ਦਿੱਤਾ ਜਾਂਦਾ ਹੈ। ਕਿਸੇ ਭੌਤਿਕ ਸਰੋਤ ਤੋਂ ਮਿਲਿਆ ਸ਼ੁਰੂਆਤੀ ਮੁੱਲ ਕਿਸੇ ਆਮ PRNG ਨੂੰ ਸੁਰੱਖਿਅਤ ਨਹੀਂ ਬਣਾਉਂਦਾ; ਐਲਗੋਰਿਦਮ ਨੂੰ ਇਸ ਲਈ ਡਿਜ਼ਾਈਨ ਕੀਤਾ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ। ਇੱਕ ਭੌਤਿਕ ਸਰੋਤ ਜਿਵੇਂ ਕਿ ਥਰਮਲ ਸ਼ੋਰ ਜਾਂ ਹਾਰਡਵੇਅਰ ਘਟਨਾਵਾਂ ਦਾ ਸਮਾਂ ਥੋੜ੍ਹੀ ਮਾਤਰਾ ਵਿੱਚ ਅਸਲ ਰੈਂਡਮਨੈੱਸ ਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈ, ਅਤੇ CSPRNG ਉਸ ਤੋਂ ਬਹੁਤ ਤੇਜ਼ੀ ਨਾਲ ਮੁੱਲਾਂ ਦਾ ਇੱਕ ਲੰਮਾ ਕ੍ਰਮ ਤਿਆਰ ਕਰਦਾ ਹੈ। ਇਹ ਸੁਮੇਲ ਉਹੀ ਹੈ ਜੋ ਇੱਕ ਓਪਰੇਟਿੰਗ ਸਿਸਟਮ ਆਪਣੇ ਉੱਤੇ ਚੱਲਣ ਵਾਲੇ ਪ੍ਰੋਗਰਾਮਾਂ ਨੂੰ ਪੇਸ਼ ਕਰਦਾ ਹੈ, ਅਤੇ ਅੱਜ ਅਭਿਆਸ ਵਿੱਚ "ਰੈਂਡਮ ਨੰਬਰ ਜਨਰੇਟਰ" ਦਾ ਆਮ ਤੌਰ 'ਤੇ ਇਹੀ ਅਰਥ ਹੁੰਦਾ ਹੈ। ਇਹ ਐਨਕ੍ਰਿਪਸ਼ਨ ਕੁੰਜੀਆਂ, ਸੈਸ਼ਨ ਟੋਕਨ ਅਤੇ ਪਾਸਵਰਡ ਤਿਆਰ ਕਰਦਾ ਹੈ।

ਬ੍ਰਾਊਜ਼ਰ ਵਿੱਚ ਰੈਂਡਮ ਨੰਬਰ

JavaScript ਕਿਸੇ ਵੈੱਬ ਪੇਜ ਨੂੰ ਰੈਂਡਮ ਮੁੱਲ ਪ੍ਰਾਪਤ ਕਰਨ ਦੇ ਦੋ ਇਨ-ਬਿਲਟ ਤਰੀਕੇ ਦਿੰਦੀ ਹੈ, ਅਤੇ ਉਹ ਵੱਖ-ਵੱਖ ਸ਼੍ਰੇਣੀਆਂ ਨਾਲ ਸਬੰਧਤ ਹਨ। Math.random() ਇੱਕ ਸਧਾਰਨ PRNG ਹੈ: ਭਾਸ਼ਾ ਦਾ ਮਿਆਰ ਐਲਗੋਰਿਦਮ ਦੀ ਚੋਣ ਹਰੇਕ ਬ੍ਰਾਊਜ਼ਰ 'ਤੇ ਛੱਡ ਦਿੰਦਾ ਹੈ ਅਤੇ ਸੁਰੱਖਿਆ ਬਾਰੇ ਕੋਈ ਵਾਅਦਾ ਨਹੀਂ ਕਰਦਾ — ਇਹ ਐਨੀਮੇਸ਼ਨ ਲਈ ਠੀਕ ਹੈ, ਪਰ ਕਿਸੇ ਅਜਿਹੇ ਡਰਾਅ ਲਈ ਅਯੋਗ ਹੈ ਜਿਸ 'ਤੇ ਕੋਈ ਵਿਵਾਦ ਹੋ ਸਕਦਾ ਹੈ। ਦੂਜਾ ਤਰੀਕਾ Web Crypto API ਹੈ। ਇਸਦਾ crypto.getRandomValues() ਮੈਥਡ ਕ੍ਰਿਪਟੋਗ੍ਰਾਫਿਕ ਤੌਰ 'ਤੇ ਮਜ਼ਬੂਤ ਰੈਂਡਮ ਮੁੱਲ ਵਾਪਸ ਕਰਦਾ ਹੈ, ਜੋ ਕਿ ਓਪਰੇਟਿੰਗ ਸਿਸਟਮ ਦੀ ਐਂਟਰੌਪੀ ਨਾਲ ਸੀਡ ਕੀਤੇ CSPRNG ਦੁਆਰਾ ਤਿਆਰ ਕੀਤੇ ਜਾਂਦੇ ਹਨ।

ਸਾਡਾ ਬੇਤਰਤੀਬ ਨੰਬਰ ਜਨਰੇਟਰ ਹਰ ਡਰਾਅ ਲਈ Web Crypto API ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ, ਅਤੇ ਨੰਬਰ ਕਿਸੇ ਸਰਵਰ ਦੀ ਬਜਾਏ ਤੁਹਾਡੇ ਬ੍ਰਾਊਜ਼ਰ ਵਿੱਚ ਤਿਆਰ ਕੀਤੇ ਜਾਂਦੇ ਹਨ। ਇਹੀ ਸਰੋਤ ਇਸ ਸਾਈਟ ਦੇ ਹੋਰ ਜਨਰੇਟਰਾਂ ਨੂੰ ਵੀ ਚਲਾਉਂਦਾ ਹੈ, ਭਾਵੇਂ ਤੁਸੀਂ ਪਾਸਾ ਸੁੱਟੋ, ਸਿੱਕਾ ਉਛਾਲੋ ਜਾਂ ਪਾਸਵਰਡ ਜਨਰੇਟ ਕਰੋ।

ਰੈਂਡਮ ਬਿੱਟਾਂ ਤੋਂ ਤੁਹਾਡੀ ਰੇਂਜ ਦੇ ਨੰਬਰ ਤੱਕ

ਇੱਕ ਕ੍ਰਿਪਟੋਗ੍ਰਾਫਿਕ ਤੌਰ 'ਤੇ ਸੁਰੱਖਿਅਤ ਜਨਰੇਟਰ ਨਿਰਪੱਖ ਡਰਾਅ ਦਾ ਸਿਰਫ਼ ਅੱਧਾ ਹਿੱਸਾ ਹੈ। ਇਹ ਕੱਚੇ ਬਿੱਟ ਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈ, ਅਤੇ ਪ੍ਰੋਗਰਾਮ ਨੂੰ ਅਜੇ ਵੀ ਉਹਨਾਂ ਨੂੰ ਤੁਹਾਡੀ ਰੇਂਜ ਦੇ ਨੰਬਰ ਵਿੱਚ ਬਦਲਣਾ ਪੈਂਦਾ ਹੈ — ਅਤੇ ਇੱਥੇ ਹੀ ਅਸਮਾਨ ਸੰਭਾਵਨਾ ਦਾ ਪੱਖਪਾਤ (modulo bias) ਆ ਸਕਦਾ ਹੈ। ਮੰਨ ਲਓ ਕਿ ਸਰੋਤ ਬਰਾਬਰ ਸੰਭਾਵਨਾਵਾਂ ਨਾਲ 0 ਤੋਂ 9 ਤੱਕ ਦੇ ਮੁੱਲ ਦਿੰਦਾ ਹੈ ਅਤੇ ਤੁਹਾਨੂੰ 0 ਤੋਂ 5 ਤੱਕ ਦਾ ਨੰਬਰ ਚਾਹੀਦਾ ਹੈ। 6 ਨਾਲ ਵੰਡਣ ਤੋਂ ਬਾਅਦ ਬਾਕੀ ਬਚਿਆ ਮੁੱਲ ਲੈਣਾ ਸੁਭਾਵਿਕ ਲੱਗਦਾ ਹੈ, ਪਰ ਫਿਰ 0, 1, 2 ਅਤੇ 3 ਵਿੱਚੋਂ ਹਰੇਕ ਦੋ ਤਰੀਕਿਆਂ ਨਾਲ ਆ ਸਕਦਾ ਹੈ ਅਤੇ 4 ਅਤੇ 5 ਸਿਰਫ਼ ਇੱਕ ਤਰੀਕੇ ਨਾਲ, ਇਸ ਲਈ 0 ਤੋਂ 3 ਤੱਕ ਦੇ ਹਰੇਕ ਨੰਬਰ ਦੇ ਆਉਣ ਦੀ 20% ਸੰਭਾਵਨਾ ਹੁੰਦੀ ਹੈ, ਅਤੇ 4 ਅਤੇ 5 ਦੀ ਸਿਰਫ਼ 10%। ਇਸ ਪੱਖਪਾਤ ਨੂੰ ਦੂਰ ਕਰਨ ਦਾ ਇੱਕ ਤਰੀਕਾ ਇਹ ਹੈ ਕਿ ਜਿਹੜੇ ਮੁੱਲ ਫਿੱਟ ਨਹੀਂ ਬੈਠਦੇ ਉਹਨਾਂ ਨੂੰ ਰੱਦ ਕਰ ਦਿੱਤਾ ਜਾਵੇ ਅਤੇ ਦੁਬਾਰਾ ਡਰਾਅ ਕੀਤਾ ਜਾਵੇ; ਬੇਤਰਤੀਬ ਨੰਬਰ ਜਨਰੇਟਰ ਸਮੱਗਰੀ ਵਿੱਚ ਇਸ ਬਾਰੇ ਵਿਸਥਾਰ ਨਾਲ ਦੱਸਿਆ ਗਿਆ ਹੈ।

ਦੋ ਹੋਰ ਗੱਲਾਂ ਲੋਕਾਂ ਨੂੰ ਹੈਰਾਨ ਕਰਦੀਆਂ ਹਨ। ਦੁਹਰਾਓ ਬਿਲਕੁਲ ਆਮ ਹੈ: ਜਦੋਂ 1 ਤੋਂ 10 ਤੱਕ ਦਾ ਕੋਈ ਪੂਰਨ ਅੰਕ ਸੁਤੰਤਰ ਤੌਰ 'ਤੇ ਕੱਢਿਆ ਜਾਂਦਾ ਹੈ ਅਤੇ ਹਰੇਕ ਨੰਬਰ ਦੀ ਬਰਾਬਰ ਸੰਭਾਵਨਾ ਹੁੰਦੀ ਹੈ, ਤਾਂ ਹੁਣੇ ਕੱਢੇ ਗਏ ਨੰਬਰ ਦੇ ਦੁਬਾਰਾ ਆਉਣ ਦੀ ਵੀ ਉਹੀ 10 ਵਿੱਚੋਂ 1 ਸੰਭਾਵਨਾ ਹੁੰਦੀ ਹੈ ਜੋ ਕਿਸੇ ਹੋਰ ਦੀ ਹੁੰਦੀ ਹੈ। ਬਿਨਾਂ ਦੁਹਰਾਓ ਵਾਲਾ ਡਰਾਅ ਇੱਕ ਵੱਖਰੀ ਕਿਸਮ ਦਾ ਡਰਾਅ ਹੈ, ਕੋਈ ਵੱਧ ਰੈਂਡਮ ਡਰਾਅ ਨਹੀਂ। ਅਤੇ ਇਕੱਲਾ ਇੱਕ ਨਿਰਪੱਖ ਜਨਰੇਟਰ ਪੂਰੀ ਪ੍ਰਕਿਰਿਆ ਨੂੰ ਨਿਰਪੱਖ ਨਹੀਂ ਬਣਾਉਂਦਾ: ਪ੍ਰਤੀਯੋਗੀਆਂ ਦੀ ਸੂਚੀ ਅਤੇ ਕੋਸ਼ਿਸ਼ਾਂ ਦੀ ਗਿਣਤੀ ਵੀ ਓਨੀ ਹੀ ਮਾਇਨੇ ਰੱਖਦੀ ਹੈ, ਜਿਵੇਂ ਕਿ ਸਾਡਾ ਲੇਖ ਦੱਸਦਾ ਹੈ ਕਿ ਮੁਕਾਬਲੇ ਦਾ ਰੈਂਡਮ ਜੇਤੂ ਕਿਵੇਂ ਚੁਣੀਏ।