Jak může zcela logicky stroj jako počítač vygenerovat náhodné číslo?
Existují dva způsoby, jak počítače mohou generování náhodných čísel:
Můžete si vytvořit nějaký zařízení, které sleduje zcela náhodný přírodní události a odešle jeho výsledky k počítači. Například, můžete umístit kus radioaktivního materiálu v přední části Geigerův počítač a připojte Geigerův počítač k počítači. Vzhledem k tomu, radioaktivní rozpad je náhodný, Geiger by vytvořit skutečně náhodných čísel. Tento přístup je velmi vzácné, protože ne mnoho lidí má Geigerův počítač připojeny ke svým strojům. Můžete vytvořit vzorec, který generuje pseudonáhodné číslo. Při navrhování vzorec, myšlenka je pro to, aby produkovat řetězec čísel, která bude vypadat náhodně pro každého, kdo neví, co je vzorec. Charakteristika dobrého vzorce patří:
Zde je příklad jednoduchého náhodných čísel vzorce z. kniha " Programovací jazyk C, " od Kernighan a Ritchie:
int rand () {random_seed = random_seed * 1103515245 12345; return (unsigned int) (random_seed /65536) 32768%; }Tento vzorec předpokládá existenci proměnné nazvané random_seed, který je na počátku nastaven na nějaké číslo. Random_seed proměnná se vynásobí 1,103,515,245 a poté 12345 dostane přidá k produktu; random_seed pak je nahrazena touto novou hodnotou. To je vlastně docela dobrý pseudo-generátor náhodných čísel. Má dobré rozložení, a to je non-opakování. Pokud jej použít k výrobě náhodných čísel mezi 0 a 9, zde jsou prvních 20 hodnot, které je produkuje v případě, že semeno je 10:
44607423505664567674Máte-li produkovat 10.000 hodnot mezi 0 a 9, tady je distribuce:
0 - 10151 - 10242 - 10483 - 9964 - 9885 až 10016 - 9967 - 10068 - 9659 - 961Každá pseudo-náhodné číslo formule závisí na hodnotě semen pro spuštění sekvence. Máte-li začít se stejnou osivo, dostanete stejný sled hodnot ze vzorce. Takže pokud dáte funkce rand () zobrazený nahoře semene 10 na jednom počítači a podívat se na proud čísel, které produkuje, bude
Page [1] [2]