next up previous
Next: Přenosné Up: Generátory náhodných čísel Previous: Generátory náhodných čísel

Systémové generátory (dodávané s překladačem)

Turbo Pascal generuje náhodná čísla funkcí Random, případně Random(n) (generátor se inicializuje pomocí RandSeed(I) a Randomize).

Obvykle jsou lineární kongruenční:

$\displaystyle I_{j+1}$ $\textstyle =$ $\displaystyle (a\, I_j + c) \ \mbox{mod} \ m$  
$\displaystyle {\tt Random} := \frac{I_{j+1}}{m}$ $\textstyle \equiv$ $\displaystyle r \,
, \quad {\rm kde} \qquad
r \in \langle 0, 1)$  

Problémy:

Pozn. Při nevhodné volbě $a,\ c,\ m$ může být cyklus mnohem kratší než $m$. I pokud je perioda $\simeq m$, $k$-tice mohou ležet na podstatně menším počtu nadploch než $m^{1/k}$.

Možné vylepšení je: Zrušit sekvenční korelaci - uložit $\approx$ 100 prvků do pole a podle velikosti dalšího náhodného čísla vybrat prvek pole.


next up previous
Next: Přenosné Up: Generátory náhodných čísel Previous: Generátory náhodných čísel
Jiri Limpouch
2000-05-02