Kezdőoldal » Számítástechnika » Programozás » Hogy működik a véletlenszám...

Hogy működik a véletlenszám generálás?

Figyelt kérdés
C++-ban az srand(time(NULL)) , vagy a többi véletlenszámgenerátor, véletlengenerátor hogy működik? Mi alapján állít elő értéket magán a függvényen belül, mi zajlik ott le? Azt gondolom, hogy a time(NULL)-al is végez valamit a számításhoz, de ettől még nem lesz véletlen, vagy ha igen, akkor mi van a többivel?
2014. jan. 12. 20:15
 1/6 anonim ***** válasza:
2014. jan. 12. 20:20
Hasznos számodra ez a válasz?
 2/6 anonim ***** válasza:
91%
Első vagyok, amit te kérdezel, ha érdekel, olvass utána, nagyon érdekes és széles téma, ami szorosan összefügg a kriptográfiával is, rengeteg jó leírást lehet találni arról, hogy hogyan működik, egy gyk-s válaszban azonban nem lehet összefoglalni, éppen azért mert rengeteg ága van.
2014. jan. 12. 20:25
Hasznos számodra ez a válasz?
 3/6 A kérdező kommentje:
Köszi a válaszokat! :) Majd google-ban is megpróbálok jobban utánanézni.
2014. jan. 12. 21:44
 4/6 tabaki ***** válasza:
82%

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.

2014. jan. 12. 23:43
Hasznos számodra ez a válasz?
 5/6 coopper ***** válasza:
100%

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.

2014. jan. 13. 12:54
Hasznos számodra ez a válasz?
 6/6 anonim ***** válasza:
85%

Ú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.

2014. jan. 13. 23:31
Hasznos számodra ez a válasz?

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!