షట్టర్‌స్టాక్ / డేవిడ్ ఓర్సియా

యాదృచ్ఛిక సంఖ్యలను బాష్‌లో రూపొందించడం చాలా సులభం $RANDOM వేరియబుల్, కానీ వేరియబుల్ నిజంగా యాదృచ్ఛికమా? అధిక-నాణ్యత యాదృచ్ఛిక సంఖ్యలను మరియు మరిన్నింటిని ఉత్పత్తి చేయకుండా మిమ్మల్ని ఆపేది ఏమిటో కనుగొనండి!

టెర్మినల్ వద్ద యాదృచ్ఛిక సంఖ్యలు

బాష్‌లో యాదృచ్ఛిక సంఖ్యను సృష్టించడం చాలా సులభం అనిపిస్తుంది:

బాష్‌లో యాదృచ్ఛిక సంఖ్య యొక్క తరం

కానీ సంఖ్య నిజంగా యాదృచ్ఛికంగా ఉందా?

బాష్‌లోని యాదృచ్ఛిక సంఖ్య నిజంగా యాదృచ్ఛికమా?

నిజంగా కాదు, మనం చూడగలిగినట్లు. బాష్‌లోని యాదృచ్ఛిక సంఖ్య జనరేటర్ ఒక విత్తనంపై ఆధారపడి ఉంటుంది – యాదృచ్ఛిక సంఖ్య తరం ఫంక్షన్‌కు పంపిన విలువ – ఇది విత్తనం ఒకటే అయితే, పై ఉదాహరణ అవుట్‌పుట్‌లో చూపిన విధంగా యాదృచ్ఛిక సంఖ్యల యొక్క ఒకే క్రమాన్ని ఎల్లప్పుడూ ఉత్పత్తి చేస్తుంది .

మేము సెట్ చేయడం ద్వారా యాదృచ్ఛిక సంఖ్య జెనరేటర్‌ను విత్తన విలువతో ప్రారంభించవచ్చు RANDOM కావలసిన విత్తన విలువకు వేరియబుల్. కాబట్టి మనం యాదృచ్ఛిక జనరేటర్ కోసం ఒక విత్తనంగా యాదృచ్ఛిక సంఖ్యను అందించగలమా?

యాదృచ్ఛిక సంఖ్యను బాష్‌లోని యాదృచ్ఛిక జనరేటర్‌కు విత్తనంగా కేటాయించడం

ఇది కొంతకాలం పని చేసినట్లు అనిపిస్తుంది, మనం యాదృచ్ఛిక సంఖ్యను ఉత్పత్తి చేయాలనుకున్నప్పుడు, యాదృచ్ఛికంగా ఉత్పత్తి చేయబడిన సంఖ్యతో యాదృచ్ఛిక సంఖ్య జనరేటర్‌ను ముందుగా సీడ్ చేస్తాము. కానీ మేము చేసినదంతా కాసేపు మమ్మల్ని మోసం చేయడమే; మేము లోతు యొక్క అదనపు పొరను సృష్టించాము, కానీ ఫలితం ఎక్కువ లేదా తక్కువ ఒకే విధంగా ఉంటుంది; సంఖ్యలు యాదృచ్ఛికంగా లేవు మరియు ముందు అందించిన స్థిర విత్తనం ద్వారా ప్రభావితమవుతాయి.

ఈ సమస్యను “రాండమ్ ఎంట్రోపీ” తరం సమస్య అంటారు. మనం ఎంత ఎంట్రోపీని ఉత్పత్తి చేయగలమో, మన యాదృచ్ఛిక సంఖ్యలు మెరుగ్గా ఉంటాయి. ఈ ప్రత్యేక సమస్య కేవలం బాష్‌కు మాత్రమే పరిమితం కాదు, యాదృచ్ఛిక సంఖ్యలను రూపొందించడానికి ప్రయత్నించే అన్ని ప్రాథమిక కంప్యూటర్ సిస్టమ్‌లలో ఇది ఉంది. కాబట్టి యాదృచ్ఛికం నిజంగా యాదృచ్ఛికం కాదు. యాదృచ్ఛిక ఎంట్రోపీ పూల్ యొక్క సంక్లిష్టతను పెంచడానికి కొన్ని ఇతర యాదృచ్ఛిక వ్యవస్థలు మౌస్ కదలికలు మరియు కీబోర్డ్ స్ట్రోకులు మరియు ఇతర సెమీ రాండమ్ ఇన్పుట్లను కలిపి ఉపయోగిస్తాయి.

కాబట్టి నిజంగా యాదృచ్ఛికంగా పిలవబడే “తగినంత మంచిది” అనే యాదృచ్ఛిక సంఖ్యను ఎలా ఉత్పత్తి చేయవచ్చు?

దీని కోసం, ఒక మూలం మరియు విత్తనం వలె, మనకు నిజంగా, లేదా దాదాపుగా, నిజంగా యాదృచ్ఛికమైన ఏదో అవసరం. నేటి తేదీని ఉపయోగించడం గురించి మనం ఆలోచించవచ్చు, కానీ పునరాలోచనలో ఇది చాలా యాదృచ్చికం కాదు. జనవరి 1, 1970 న 00:00:00 UTC నుండి సెకన్ల గురించి (సాధారణంగా లైనక్స్ సర్కిల్‌లలో “యుగం” అని పిలుస్తారు)? బహుశా, కానీ మీకు కావలసిందల్లా ఎక్కడో ఒక లాగ్ ఫైల్ మరియు యుగాన్ని పునర్నిర్మించవచ్చు.

నానోసెకండ్ ప్రెసిషన్ టైమర్ యొక్క తక్కువ ముఖ్యమైన అంకెలను ఉపయోగించడం మంచి పరిష్కారం:

ఉత్తమ యాదృచ్ఛిక సంఖ్య విత్తన జనరేటర్

సూత్రప్రాయంగా, ఇది కూడా పరిపూర్ణంగా లేదు. ఈ వ్యాసం యొక్క శీర్షిక ప్రకారం ఇది “ఉత్తమ యాదృచ్ఛిక సంఖ్య తరం” శీర్షిక క్రిందకు రావచ్చు, కానీ ఎంట్రోపీ నిర్వచనం ప్రకారం పరిపూర్ణంగా లేదు. దీన్ని కొంచెం దగ్గరగా చూద్దాం.

ఉదాహరణలో, మేము వ్యక్తీకరించినట్లుగా, యుగం సమయం నుండి 4 నుండి 9 లేదా 6 సంఖ్యలను తీసుకుంటాము date +%N మరియు సబ్‌షెల్ ఫలితంగా అవుట్‌పుట్ ప్రారంభమైంది $(...). దీని అర్థం మా కనీస విత్తనం 0 మరియు మా గరిష్ట విత్తనం 999999. ఇది కేవలం 1 మిలియన్ సంఖ్యల పరిధి.

సూత్రప్రాయంగా, ఈ వ్యవస్థను ఇప్పటికీ “హ్యాక్” చేయవచ్చు: మీరు ఆ 1 మిలియన్ సంఖ్యల ద్వారా వెళ్లి, దాని ద్వారా ఉత్పత్తి చేయబడిన యాదృచ్ఛిక సంఖ్య శ్రేణులను తీసుకోవచ్చు. ఉదాహరణకు, ఎన్క్రిప్షన్ కీని ఉత్పత్తి చేయడానికి ఇది ఖచ్చితంగా చాలా తక్కువ పరిష్కారం అవుతుంది!

మేము తక్కువ సంఖ్యలను ఎంచుకుంటే, దీనికి ప్రమాదం పెరుగుతుంది. మేము ఎక్కువ ఎంచుకుంటే, ప్రమాదం తగ్గుతుంది, కానీ “యాదృచ్ఛిక విత్తనం” కూడా తక్కువ యాదృచ్ఛికంగా మారుతుంది. యుగం నుండి సెకన్లను చేర్చడం ద్వారా దీనిని ఉదాహరణగా చెప్పవచ్చు:

సెకన్లను ఉపయోగించి యాదృచ్ఛిక ఎంట్రోపీ తరం సమస్య

సెకన్లు గడిచిపోవడాన్ని మనం చూడవచ్చు! ప్రముఖ 6> 7> 8 మొదలైనవి గమనించండి.

ప్రామాణిక యాదృచ్ఛిక సంఖ్యలను ఉత్పత్తి చేసే ప్రయోజనం కోసం, ఉదాహరణకు పరీక్షా సాఫ్ట్‌వేర్‌లో అందించిన యాదృచ్ఛిక విత్తనం ఆధారంగా దాని పరీక్షా విధానాన్ని మారుస్తుంది, నానోసెకండ్ ఆధారిత పరిష్కారం సరిపోతుంది / సరిపోతుంది. మెరుగైన నాణ్యమైన యాదృచ్ఛిక సంఖ్యలు అవసరమయ్యే ఇతర పరిష్కారాల కోసం, బాహ్య హార్డ్‌వేర్ ఆధారంగా ఒక పరిష్కారం అవసరం కావచ్చు.

నిజమైన యాదృచ్ఛిక సంఖ్య ఉత్పత్తి సాధారణ విషయం కాదు. నిజమైన యాదృచ్ఛిక ఎంట్రోపీని మరియు / లేదా యాదృచ్ఛిక సంఖ్యల ఉత్పత్తిని చేరుకోగల లేదా సాధించగల హార్డ్‌వేర్ ఆధారిత పరిష్కారాలు ఉన్నాయి. ప్రత్యేకించి హార్డ్‌వేర్ ఆధారిత పరికరాలు ఆ ఖచ్చితమైన యాదృచ్ఛిక సంఖ్యను రూపొందించడానికి కీలకం.

Source link