Kezdőoldal » Számítástechnika » Programozás » A számítástechnikában mi...

A számítástechnikában mi alapján jönnek létre a véletlen szémok?

Figyelt kérdés
Ugye a számítógép mindent algoritmusok, parancsok alapján hajt végre mi az amiből a számítógép a random számokat generálja? Ezek a random számok kiszámíthatóak?

2018. jún. 2. 23:07
 1/4 hyker1811 válasza:
97%

Igen, a számítógép eredendően egy előre kiszámítható módon generál véletlenszerű számokat. A gép véletlenszerűnek tűnő számokat generál, ezeket úgy szokás nevezni, hogy pszeudovéletlen számok.


Például, beadsz a számítógépnek ötöt, a számítókép fogja, veszi a négyzetgyökét, megszorozza ötször öttel, majd veszi az első ötször kettő számot. így kaptál egy véletlenszerűnek tűnő számot, de mégis ki tudod számolni.


A legtöbb modern programozási nyelv véletlen szám generátora a Mersenne Twister módszeren alapul:


[link]

[link]


Röviden annyi, hogy az algoritmusnak beadsz egy számot, amit "seed"-nek nevezel, és az algoritmus ezzel a számmal egymás után sokszor elvégez egy bonyolult műveletet (mint ami leírtam fenn), ami után egy véletlenszerűnek tűnő számot kapsz, majd az eredményt felhasználja, hogy egy újat generáljon. Így az algoritmus generál N darab véletlenszerűnek tűnő számot amit akár papíron is ki tudsz számolni.


A baj az, hogy az algoritmus két ugyanolyan számra ugyanazt a pszeudovéletlen számot generálja.


A kulcs az az, hogy a seedet próbáld minél jobban variálni. Ezért általában amikor véletlen számot implementálsz, akkor legtöbbször a jelenlegi időt használod seednek. Mivel a jelenlegi idő minden másodpercben másmilyen, ezért minden másodpercben másmilyen véletlennek tűnő értéket kapsz.


Ha többször akarsz egy másodperc alatt egy véletlen számot generálni akkor érdemes még egy ciklusonként inkrementált értéket is hozzádobni a jelenlegi időhöz.



plussz infó, ha esetleg jobban érdekel a téma:


Ez a megközelítés általában jó saját amatőr programokhoz, mert egy véletlenszerűnek tűnő számot dob vissza, de már például ha dollármilliárdos cégeknek akarsz védelmet nyújtani, ami bizony használ véletlenül generált számokat, akkor támadók kihasználhatják az algoritmus tulajdonságait hogy lekorlátozzák a lehetséges értékeket az idő ismeretében, ezért ez akkor nem a legmegfelelőbb megoldás, ugyanis tudsz értékeket kizárni.


A Random.org atmoszférikus zajokat (szélmozgás, hőmérséklet stb.) használ a seednek a generáláshoz, ami jóformán megjósolhatatlan. Nekik van egy webes API-juk, amit használhatsz a programodban, internekapcsolat mellett.


A Cloudfare védelmet biztosít weboldalaknak kibertámadás ellen és ők is használnak random számokat. Az ő random szám generálásuk úgy müködik, hogy ki van rakva egy csomó lávalámpa egy polcra, amelyeknek véletlenszerű a mozgása, és egy kamera folyamatosan videózza őket, és amikor random számot kell generálni, ennek a videónak az egyik képkocskáját használják seendek a generáláshoz. Így úgyszintén egy igazán véletlenszerű mozgást kapsz.


https://www.youtube.com/watch?v=1cUUfMeOijg

^láva lámpáról videó

2018. jún. 2. 23:48
Hasznos számodra ez a válasz?
 2/4 anonim ***** válasza:
59%

A random számok un. pszeudo-véletlen számok.

De lehet kapni hardvert amely valódi véletlen számokat képes generálni.

2018. jún. 3. 09:00
Hasznos számodra ez a válasz?
 3/4 sharkxxx ***** válasza:

Amikor elindítasz egy programot, akkor a program megnézi, hogy mennyi az idő ezredmásodpercekben. Ebből az időpontból készít egy számot. Ennek a számnak a neve seed.

Amikor a programnak kell egy véletlen szám, akkor a seed-et megszorozza 134775813-mal, és hozzáad 1-et. Az így kapott szám lesz a véletlen szám. A seed értékét is megváltoztatja erre a számra.


Ha valaki egyszer rájön, hogy mi a seed értéke, akkor onnantól kezdve az összes random számot előre kitudja számolni.

2018. jún. 3. 12:38
Hasznos számodra ez a válasz?
 4/4 A kérdező kommentje:

Köszönöm szépen #1 a nagyon hasznos választ.

Illetve #3 nak is :)

2018. jún. 3. 13:10

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!