యాదృచ్ఛిక సంఖ్యా జనరేటర్ అంటే ఏమిటి?

యాదృచ్ఛిక సంఖ్యా జనరేటర్ (RNG) అనేది యాదృచ్ఛిక లేదా సూడోరాండమ్ సంఖ్యలను ఉత్పత్తి చేసే ఒక వ్యవస్థ. తదుపరి సంఖ్యను వాస్తవానికి అంచనా వేయవచ్చా లేదా అనేది జనరేటర్ రకంపై ఆధారపడి ఉంటుంది. కొన్ని జనరేటర్లు భౌతిక ప్రక్రియను ఉపయోగిస్తాయి, కొన్ని అల్గోరిథంతో సంఖ్యలను లెక్కిస్తాయి, మరియు కొన్ని అల్గోరిథంలు వాటి అవుట్‌పుట్‌ను చూసిన వ్యక్తి కూడా తర్వాత ఏమి రాబోతోందో ఊహించలేనంత పటిష్టంగా నిర్మించబడ్డాయి. యాదృచ్ఛికంగా కనిపించడం మరియు ఊహించలేకపోవడం అనేవి వేర్వేరు లక్షణాలు; ఈ వ్యాసంలోని ఎక్కువ భాగం ఆ వ్యత్యాసం గురించే వివరిస్తుంది.

హార్డ్‌వేర్ యాదృచ్ఛిక సంఖ్యా జనరేటర్లు

హార్డ్‌వేర్ యాదృచ్ఛిక సంఖ్యా జనరేటర్ (HRNG), దీనిని నిజమైన యాదృచ్ఛిక సంఖ్యా జనరేటర్ (TRNG) అని కూడా పిలుస్తారు, ఇది భౌతిక ప్రక్రియ నుండి సంఖ్యలను పొందుతుంది. పురాతనమైనవి మన కళ్ల ముందే పనిచేస్తాయి: ఎగురవేసిన నాణెం, దొర్లించిన పాచిక, రౌలెట్ చక్రం. మెకానిక్స్ నియమాలు వాటిలో ప్రతిదానిని పూర్తిగా వివరిస్తాయి; అయినప్పటికీ, చక్కగా తయారు చేయబడిన చక్రం ఆచరణలో ఊహించలేనిది, ఎందుకంటే ప్రతి భ్రమణం ప్రారంభమయ్యే విధానంలో స్వల్ప వ్యత్యాసాలు కూడా పూర్తిగా భిన్నమైన ఫలితాలుగా మారుతాయి.

ఆధునిక హార్డ్‌వేర్ జనరేటర్లు సూక్ష్మ భౌతిక దృగ్విషయాలను కొలుస్తాయి: ఎలక్ట్రానిక్ సర్క్యూట్‌లలో షాట్ శబ్దం మరియు థర్మల్ శబ్దం, వాతావరణ శబ్దం, క్వాంటమ్ ప్రభావాలు. ఇవి ఎంట్రోపీకి — కొలవగల ఊహించలేని తనం — మంచి వనరులు; కానీ భౌతిక మూలం సహజంగానే పరిపూర్ణమైనది కాదు: ఇది అసమాన అవకాశాలను కలిగి ఉండవచ్చు, మారవచ్చు మరియు విఫలం కావచ్చు, కాబట్టి దాని నాణ్యతను అంచనా వేయాలి మరియు పర్యవేక్షించాలి, అవసరమైన చోట దాని ఫలితాలను మరింతగా ప్రాసెస్ చేయాలి; దీనినే NIST SP 800-90B వంటి ప్రమాణాలు వివరిస్తాయి. భద్రతా హామీ అత్యంత ముఖ్యమైన చోట హార్డ్‌వేర్ వనరులు ఉపయోగించబడతాయి — ముఖ్యంగా క్రిప్టోగ్రఫీలో, ఇక్కడ అవి ట్రాన్స్‌పోర్ట్ లేయర్ సెక్యూరిటీ (TLS) వంటి ప్రోటోకాల్‌ల వెనుక ఉన్న కీలకు అవసరమైన ఊహించలేని ప్రారంభ పదార్థాన్ని అందిస్తాయి.

సూడోరాండమ్ సంఖ్యా జనరేటర్లు

భౌతిక పరికరానికి ప్రత్యామ్నాయం అల్గోరిథం. సూడోరాండమ్ సంఖ్యా జనరేటర్ (PRNG) యాదృచ్ఛికంగా కనిపించే క్రమాన్ని ఉత్పత్తి చేస్తుంది, కానీ ఇది విత్తనం (seed) అని పిలువబడే ప్రారంభ విలువ ద్వారా పూర్తిగా నిర్ణయించబడుతుంది. అదే అల్గోరిథంకు అదే విత్తనాన్ని ఇస్తే, మీరు ప్రతిసారీ ఒకే క్రమాన్ని పొందుతారు. ఫలితం ఊహించలేనదిగా ఉండవలసిన చోట, విత్తనం లేదా అంతర్గత స్థితిని ఊహించగలిగినా లేదా పునర్నిర్మించగలిగినా అది ఒక బలహీనత అవుతుంది; కానీ ఫలితాన్ని ఖచ్చితంగా పునరుత్పత్తి చేయవలసిన చోట అది బలమవుతుంది — ఒక అనుకరణ లేదా పరీక్షను ఖచ్చితంగా మళ్లీ అమలు చేయవచ్చు. PRNGలు వేగవంతమైనవి, చౌకైనవి మరియు అమలు చేయడం సులభం, అందుకే చాలా సాఫ్ట్‌వేర్‌లు వీటిపై ఆధారపడతాయి. బాగా తెలిసిన అల్గోరిథంలలో లీనియర్ కాంగ్రూయెన్షియల్ జనరేటర్ (LCG), xorshift జనరేటర్లు మరియు Mersenne Twister ఉన్నాయి.

Mersenne Twister

1997 లో Makoto Matsumoto మరియు Takuji Nishimura చే ప్రచురించబడిన Mersenne Twister, అత్యంత విస్తృతంగా ఉపయోగించే సూడోరాండమ్ సంఖ్యా జనరేటర్లలో ఒకటి మరియు అనేక ప్రోగ్రామింగ్ భాషలలో డిఫాల్ట్‌గా ఉంది. దీని పేరు దాని వ్యవధి నుండి వచ్చింది — ఆ క్రమం పునరావృతం కావడానికి ముందు ఉండే పొడవు — ఇది ప్రామాణిక వేరియంట్ అయిన MT19937 లో మెర్సెన్ ప్రైమ్ అయిన 219937 − 1. ఇది యాదృచ్ఛికత యొక్క చాలా గణాంక పరీక్షలలో ఉత్తీర్ణత సాధిస్తుంది మరియు అనుకరణలకు బాగా సరిపోతుంది. అయితే, ఇది రహస్యాలను దాచడానికి రూపొందించబడలేదు: వరుసగా వచ్చే 624 32-బిట్ అవుట్‌పుట్‌ల నుండి ఎవరైనా దాని అంతర్గత స్థితిని పునర్నిర్మించవచ్చు మరియు తదుపరి ప్రతి విలువను అంచనా వేయవచ్చు; కాబట్టి కీలు, పాస్‌వర్డ్‌లు లేదా ఊహించలేనదిగా ఉండవలసిన దేనికైనా దీనిని ఉపయోగించకూడదు.

క్రిప్టోగ్రాఫికల్‌గా సురక్షితమైన జనరేటర్లు మరియు ఎంట్రోపీ

చాలా అప్లికేషన్‌లకు ఒకేసారి రెండు విషయాలు అవసరం: అల్గోరిథం యొక్క వేగం మరియు భౌతిక మూలం యొక్క ఊహించలేని తనం. దీనికి సమాధానం క్రిప్టోగ్రాఫికల్‌గా సురక్షితమైన సూడోరాండమ్ సంఖ్యా జనరేటర్ (CSPRNG). ఇది కూడా ఒక PRNG యే, కానీ దాని అవుట్‌పుట్‌లో కొంత భాగాన్ని చూడటం ద్వారా మిగిలిన భాగాన్ని ఆచరణాత్మకంగా అంచనా వేయడానికి ఎటువంటి మార్గం లేని విధంగా నిర్మించబడింది; మరియు ఇది నిజమైన ఎంట్రోపీ మూలం నుండి విత్తనం పొందుతుంది, క్రమం తప్పకుండా మళ్లీ విత్తనం చేయబడుతుంది. భౌతిక మూలం నుండి వచ్చిన విత్తనం సాధారణ PRNGని సురక్షితమైనదిగా మార్చదు; అల్గోరిథం కూడా దాని కోసమే ప్రత్యేకంగా రూపొందించబడాలి. థర్మల్ శబ్దం లేదా హార్డ్‌వేర్ ఈవెంట్‌ల సమయం వంటి భౌతిక మూలం ఒక చిన్న మొత్తంలో నిజమైన యాదృచ్ఛికతను అందిస్తుంది, మరియు CSPRNG దాని నుండి చాలా వేగంగా విలువల పొడవైన క్రమాన్ని పొందుతుంది. ఈ కలయికే ఆపరేటింగ్ సిస్టమ్ దానిపై నడుస్తున్న ప్రోగ్రామ్‌లకు అందిస్తుంది, మరియు నేడు ఆచరణలో "యాదృచ్ఛిక సంఖ్యా జనరేటర్" అంటే సాధారణంగా ఇదే అర్థం. ఇది ఎన్‌క్రిప్షన్ కీలు, సెషన్ టోకెన్లు మరియు పాస్‌వర్డ్‌లను ఉత్పత్తి చేస్తుంది.

బ్రౌజర్‌లో యాదృచ్ఛిక సంఖ్యలు

జావాస్క్రిప్ట్ ఒక వెబ్ పేజీకి యాదృచ్ఛిక విలువలను పొందడానికి రెండు అంతర్నిర్మిత మార్గాలను అందిస్తుంది, మరియు అవి వేర్వేరు తరగతులకు చెందినవి. 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 అవకాశం కలిగి ఉంటుంది. పునరావృతం లేని డ్రా అనేది ఒక విభిన్నమైన డ్రా విధానం మాత్రమే, మరింత యాదృచ్ఛికమైనది కాదు. మరియు న్యాయమైన జనరేటర్ మాత్రమే మొత్తం ప్రక్రియను న్యాయమైనదిగా చేయదు: పాల్గొనేవారి జాబితా మరియు ప్రయత్నాల సంఖ్య కూడా అంతే ముఖ్యం అని పోటీ విజేతను యాదృచ్ఛికంగా ఎలా ఎంచుకోవాలి అనే మా వ్యాసం వివరిస్తుంది.