Text komentáře:

Generátor náhodných čísel

Prvý, ktorý ma napadol, lebo som sa s ním náhodou v blízkej minulosti stretol je tzv. kongruenčný generátor. (Teraz som si neni istý aké má rozdelenie, ale mohlo by to byť normálne. Treba vyskúšať :-)) Jeho vzorec je:

x_k+1 = (x_k * a + c) modulo m

x_k+1 - nové náhodné číslo
x_k - posledné náhodné číslo
a - násobiaca konštanta
c - aditívna konštanta, brániaca degenerovaniu generátora, pri prípadnom vygenerovaní nuly.
m - deliteľ, obmedzujúci najvyššiu hodnotu generovaného čísla.

Ako aj generátory vstavané v programovacíxh jazykoch, treba ho "naštartovať" nejakým prvým číslom x_0.

V ideálnom prípade generátor pracuje s periódou m. Dobré výsledky dávajú generátory, pri voľbe nepárneho x_0, deliteľa m=2^r a násobiča a=8k+-3. Pre ľubovoľné k>0 je potom perióda 2^(r-2). A ešte hodnota násobiča by mala byť blízka číslu a=2^(r/2).

Ako príklad pre 32 bitový počítač tu mám napríklad uvedené: m=2^31, a=2^16+3

Kdesi sme mali aj generátory s inými rozdeleniami (rovnomerné, poissonovo). Ak by ste mali záujem, skúsim ich pohľadať.

Satano


Názor ostatních: nikdo nehodnotil


Váš názor na tento komentář:







Zpět na komentáře