Stránka 1 z 1

Ako funguje generovanie náhodných čísel

Napsal: 30 zář 2020 15:30
od aribosstv
ahojte ako funguje generovanie náhodného čísla v bezpečnosných serveroch keď matematika nieje náhodná

Re: Ako funguje generovanie náhodných čísel

Napsal: 30 zář 2020 16:07
od Uziv00

Re: Ako funguje generovanie náhodných čísel

Napsal: 30 zář 2020 17:22
od faraon
To záleží jak vysokou úroveň zabezpečení požaduješ. Například v Linuxu se k tomu používá sbírání entropie, sledováním nepravidelných dějů v počítači. Jeden z nich je pohyb myši uživatelem, který vytváří "šum", a ten se v takovém generátoru akumuluje společně s jinými událostmi. To je poměrně bezpečné a celkem levné.

Vysoce bezpečné je například sledování nějakého štěpného materiálu, třeba uranu, počítačem částic. Ty z něch vylétají v náhodných a zcela nepředvídatelných intervalech, nevýhodou podobných metod je poměrně vysoká finanční náročnost. Ono dát pár milionů dolarů jenom za opravdu perfektní simulaci kostky na "Člověče, nezlob se" asi nemá úplně smysl.

Jednoduchý a nepříliš bezpečný způsob je funkce pro generování pseudonáhodné posloupnosti. Jeho základem je takzvané "semínko" (seed), a s ním se při každém čtení provádí nějaká posloupnost úkonů, obvykle matematických a bitových operací, které změní jeho stav v určitém rozsahu.

Příklad:

Při spuštění programu se seed nastaví na libovolnou hodnotu, například podle systémových hodin. To zaručuje, že při dalším spuštění programu v něm bude vznikat jiná posloupnost čísel. Takže třeba v tuhle chvíli to bude 165241. Pro jednoduchost použijeme šestnáctibitovou celočíselnou proměnnou s rozsahem kladných čísel 0..65535, takže její obsah bude zbytek po dělení 65536, tudíž 165241 modulo 65536 = 34169.

Pokud potřebuješ "vylosovat náhodné číslo", provedeš tenhle výpočet:

Kód: Vybrat vše

seed = seed * 12345 + 6789

A protože se výsledek ořízne na spodních šestnáct bitů, stane se opět tohle:

Kód: Vybrat vše

seed = seed modulo 65536

No a vyjde ti číslo 33398.
Při opakování to bude 18123.
Při dalším 60865.
Pak 34941.
61018.
3215.
Atd.

Pokud to budeš dělat dostatečně dlouho, projdeš všech 65536 možností a posloupnost se bude opakovat. Když použiješ jiné konstanty nebo jiný vzorec, nemusíš ani všechny ty možnosti použít a bude se těch čísel opakovat jenom pár, což je ještě horší.

Re: Ako funguje generovanie náhodných čísel

Napsal: 30 zář 2020 18:01
od Uziv00
Ukazatel myši je dle mého nesmysl a celé to o něm je jen propaganda pro lidi, kteří tomu nerozumí.
Vysvětlení:
Pokud uvažujeme klasickou wokenní obrazovku, pak nejčastěji bude kurzor vpravo nahoře (uzavírání/minimalizace), poté vlevo dole (nabídka start), poté vpravo dole (hodiny a systray) a nejméně vlevo nahoře (leda by tam byla nejčastěji používaná ikona).
Z toho plyne že je zde určitá pravděpodobnost a pokud je pravděpodobnost, pak pohyby myši můžu nahradit gaussovou křivkou. Tedy použiji matematiku místo sledování myši.