Avatar uživatele
horacion

Proč náhodné číslo není náhodné?

U několika programovacích jazyků se mluví o tzv. „pseudonáhodném“ číslu. Znamená to tedy, že když dám pomocí nějaké funkce random() vygenerovat číslo, tak není tak úplně náhodné? Otázka by spíš mohla znít – jak vnitřně v programovacích jazycích funguje generování náhodného čísla?

Uzamčená otázka

ohodnoťte nejlepší odpověď symbolem palce

Zajímavá 1Pro koho je otázka zajímavá? led před 4865 dny Sledovat Nahlásit



Nejlepší odpověď
Avatar uživatele
arygnoc

pseudonáhodné číslo je číslo generované z tabulky, v kterém jsou čísla uspořádáné podle nějakého náhodného algorytmu.
Při každém startu programu se generátor pseudonáhodných čísel nastaví na 0, tudíž generuje za sebou ty samé postupnosti náhodných čísel.
Dá se tomu předejít tím, že se načte x čísel z tohoto generátoru ( i stovky, tisíce) před spuštěním programu (ale v jeho těle, jinak by se zase nastavil na 0), ale pokaždé jinak (ošetřit např pomocí algorytmu, v kterém bude figurovat čas), aby při každém spuštění programu pseudogenerátor „startoval“ u jiného čísla.

0 Nominace Nahlásit

Další odpovědi
Avatar uživatele
Alesh

Protože je nějakým způsobem vygenerováno. Zpravidla se to dělá tak, že se vezme systémový čas, pronásobí se to nějakým velkým prvočíslem a následně ještě dále upraví tak, aby to bylo číslo z nějakého intervalu a s nějakým daným počtem desetinných míst.
Program si ty čísla nevymýšlí, ale generuje podle nějakého jasného, předem definovaného, postupu, proto to není náhodné. Principy generování jistě budou lépe vysvětleny někde na netu … Google, Wikipedia.

0 Nominace Nahlásit


Avatar uživatele
baghira

Ač se to může zdát neuvěřitelné, náhoda nemá v informatice místo. „Náhodná čísla“ jsou ve skutečnosti výsledky nějakého výpočtového algoritmu, takže při opakovaném výpočtu by byla i tato čísla opakovaně stejná. Jako prvek náhody, zajišťující to, aby nebyla, se nejčastěji používají hodiny (jako vstup do výpočtu se použije aktuální čas, takže při opakovaném spuštění jsou výsledky jiné). Popisuju to velmi laicky, generátory náhodných čísel jsou docela věda.

V aplikacích, kde na náhodnosti opravdu životně záleží, třeba v kryptografii, se používá např. hardware, které generuje číselné hodnoty třeba z rádiového šumu.

0 Nominace Nahlásit

Avatar uživatele
MrGandy

To by chtělo spíš nějakého matematiko programátora …

0 Nominace Nahlásit


Diskuze k otázce

U otázky nebylo diskutováno.

Nový příspěvek
Zajímavé otázky v kategorii Počítače a internet