Hogyan működik a véletlenszámgenerátor?
Annyit tudok a dologról,hogy a nevével ellentétben nem szó szerint -véletlenül- dob ki egy számot a gép,hanem egy bonyolult matematikai számítás alapján teszi.
Nem vagyok szakértő és nem akarok hülyeséget mondani,de ezt szakkönyvben olvastam.
Az órát ne úgy értsd, hogy mutatja neked a kütyü, hogy 17:32:05. Óra alatt én tulajdonképpen egy számlálót értek, aminek minden egyes órajelnél növekszik eggyel az értéke. Órajel alatt pedig egy egységnyi időt értünk, ami alatt a processzor egy alapműveletet végez. Ezt legtöbbször, azt hiszem, egy kvarckristály generálja (legalábbis a kvarcóráknál), de nem akarok hülyeséget mondani.
Szóval, úgy képzelem el, hogy a számológép processzorában pl. egy két byte-nyi (16 bit) regiszter fenn van tartva erre a célra, aminek bekapcsoláskor 0 az értéke, és minden egyes órajelnél hozzáad 1-et. A számológép órajelétől függően ennek az értéke gyorsan növekszik, majd - mivel 2 byte-os - miután eléri a 65535-öt, ismét kezdi 0-ról, és így jár körbe.
Amikor a véletlen számra van szüksége, az ezt generáló matematikai függvénybe beleszámítja ennek a regiszternek az értékét (akár több alkalommal is a művelet során), és mivel a regiszter értéke folyamatosan változik, és emberi tényezőn múlik, hogy mikor van szükség a szám generálására, gyakorlatilag véletlen számhoz jutunk.
Hozzáteszem, hogy ez nem biztos, hogy így van, csak az ismereteim alapján én így képzelem el, illetve - ha nekem kellene - így valósítanám meg, vagy legalábbis ezen az úton indulnék el. Ugyanis minél több emberi tényezőt vonunk be a függvénybe, annál nagyobb hatékonysággal kapunk véletlen számot. Ehhez pedig a legkézenfekvőbb, ha két, ember által keltett esemény között folyamatosan pörgetjük egy számláló értékét (bekapcsolástól a generálásig, a legutóbbi gombnyomástól eltelt idő stb.).
Kíváncsi lennék egy szakértő véleményére, hogy mennyire közelítettem meg a valóságot, illetve mennyire járok messze tőle.:)
Mostmár kíváncsivá váltam, én kipróbálnám, hogy tökéletesen áramtalanítom a számológépem (elemet ki és várnék vagy fél órát még), majd visszakapcs, és generálnék egy véletlen számot. Lejegyezném, majd ismét áramtalanít, ismét várnék, ismét vissza és ismét véletlen szám. Kíváncsi volnék, hogy ugyanazt az értéket adja-e.
Régen, amikor még programoztunk a fősulin, Pascalban, ha nem futtattad le a "randomize" utasítást, a generált véletlen számok ugyanazok voltak. Tehát ha bekapcsolás után generáltál 10 véletlen számot, a köv. bekapcsolásnál ugyanazt a 10 számjegyet kaptad. A "randomize" parancs mellett pedig már nem.
Köszönöm a válaszokat. A 7:37-es teljesen logikusan hangzik. Igaz, óra alatt nem kell feltétlenül órát értenem, hanem számlálót.
Érdekes dolog ez a véletlen. Meg is érett bennem mégegy kérdés.
http://www.gyakorikerdesek.hu/tudomanyok__alkalmazott-tudoma..
Itt megtalálsz sok pontos választ a kérdésedre.
Pedro
Vannak egyrészt az álvéletlenszám-generátorok, pl. van egy bonyolult függvény, ami minden lépésben egy nagyon sokjegyű számot eredményez, és ennek pl. az utolsó jegyét vesszük figyelembe.
Vannak valódi véletlenszám generátorok, pl.:
(1)radioizotóp aktivitását méri egy számlálócső: ez állandóan ingadozik
(2)egy ellenállás ellenállását mérni, a negyedik-ötödik jegy már "véletlen" ingadozásokat mutat
(3)légköri elektromos zajokat antennával felvenni
stb.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!