Hogy működik a véletlenszám generálás?
Nagyon leegyszerűsítem, mert én sem értek hozzá...
Találnak egy algoritmust, amely emberi logika szerint kiszámíthatatlan számsorozatot állít elő, például egy nem ismétlődő tizedestört helyiértékeit. A módszer olyan, hogy kis eltérések is nagy változásokat idézzenek elő az eredményben, mégpedig a változás mértékétől függetlenül. Az így kapott számsor, annak ellenére, hogy te nem látod benne a logikát, azonos alapértékek esetén mindig megegyezik, ezért kapcsolják össze egy olyan értékkel, amely a te akaratodtól függetlenül változik. Erre jól használható a számítógép órája, amely ezredmásodpercenként változtatja az értékét, ezért gyakorlatilag nincs lehetőséged arra, hogy kétszer ugyanaz az érték kerüljön a képletbe, vagy pontosan eltalálj egy kívánt kezdőértéket.
Tesztelésre vagy egyéb speciális feladatokra (például a POV-Ray háromdimenziós leírásaiban, ahol szükséges, hogy ugyanazon véletlenszerű elrendezés reprodukálható legyen), hasznos lehet, ha a számsor állandó, ekkor fix értéket adnak át a függvénynek.
Szia.
Mivel én sem értek hozzá, de én is olvastam rólla valahol, akkor leirom én is amit olvastam :
Veszed az időd másodpercben, vagy tizedmásodpercben, dátumból számolva kapsz belőle egy nagy számot pl 5-6-7-8-9-jegyüt (végül is az algoritmus működése szempontjából nem számottevő hány jegyű a szám). (pl 12345678) most ezt a számot összeszorzod a tükörképével vagy a felével vegyük most a felét :
12345678*6172839=76207882639842
Az erddményből vagy az elejét, vagy a végét vagy a közepéről kiveszel egy szinten 8 jegyű számot vegyük a végét : 82639842 ezt újra összeszorzod a felével, ujra veszed a végét vagy az elejéről 8 jegyet vagy a közepéről, elvégzed a fenti algoritmust 5-ször vagy 10-szer és már meg is van a véletlen számod.
Az utoljára kivet 8 számjegyű szám lesz a véletlenszámod. Leképzed az adott intervallumra (alapértelmezetten 0.0 és 1.0 közé) és kész.
Üdv.
Úgy tudom, hogy a C++ LKM (lineáris kongruens modulo) generátort használ, de lehet, hogy hülyeséget mondtam. Mindenesetre az biztos, hogy mivel a számítógép egy determinisztikus rendszer, ezért soha nem fog valódi véletlenszámokat előállítani, csak pszeudo- (vagy ál-) véletlenszámokat. A számsorozat x-edik tagját az x-1. tag valamilyen függvényeként számolja ki. Vannak egyébként különböző tesztelési eljárások arra, hogy meghatározzák, jó-e egy adott véletlenszám-generátor: átlagérték kiszámítása, eloszlásfüggvény meghatározása, pár- és magasabb rendű korrelációk vizsgálata.
Szóval ha valódi véletlenszámokra van szükséged, akkor vehetsz egy DVD-t ami véletlenszámokat tartalmaz. Az ezen lévő számokat atomi folyamatok segítségével állítják elő, ugyanis pl. a radioaktív bomlás bekövetkezése egy adott időpillanatban valódi véletlen.
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!