1.2.6. Náhodné čísla

 

Táto kapitola pojednáva o funkcií RND a kľúčovom slove RANDOMIZE,  pomocou ktorých pracujeme s náhodnými číslami. Obidve na rovnakom klávese (T). RANDOMIZE je označené skratkou RAND. Funkcia RND nemá žiaden argument. Vždy, keď ju použijete, je jej výsledkom nové náhodné číslo medzi 0 a 1. Niekedy môže dať hodnotu 0, ale nikdy nie 1. Skúste:

      10 PRINT RND

      20 GO TO 10

a vidíte, ako sa menia hodnoty funkcie. V skutočnosti RND nie je úplne náhodné číslo, pretože ide vždy o číslo z postupností 65536 čísiel (táto postupnosť je pevne daná). Preto hovoríme, že RND je pseudonáhodné číslo. Ako sme už uviedli, dáva RND náhodné čísla medzi 0 a 1, ale môžete ľahko získať čísla v inom rozsahu. Napr. 5 * RND je číslo medzi 0 a 5, 1.3+0.7*RND je medzi 1.3 a 2. Na získanie celých čísiel použite funkciu INT (pamätajte, že INT zaokrúhľuje vždy dole), ako 1+INT(RND*6), čo simuluje hádzanie kockou. RND*6 je v rozsahu 0 - 6, ale v skutočnosti nikdy nedostanete 6, preto +1.

Príkaz RANDOMIZE sa používa na to, aby odštartoval RND v určitom mieste postupnosti čísiel, ako ukazuje nasledujúci program:

      10 RANDOMIZE 1

      20 PRINT RND

      30 GO TO 20

Po každom vykonaní RANDOMIZE 1 začne postupnosť RND číslom 0.0022735596. Môžete samozrejme použiť i iné čísla od 1 - 65535 v príkaze RANDOMIZE, potom je začiatok postupnosti náhodných čísiel v iných miestach. Samotné RANDOMIZE (RANDOMIZE 0 má účinok) je rozdielne, pretože skutočne tvorí RND, ako ukazuje ďalší program:

      10 RANDOMIZE

      20 PRINT RND : GO TO 10

Postupnosť, ktorú dostanete, nie je náhodná, pretože RANDOMIZE využíva čas od zapnutia počítača. Od tej doby je každé RANDOMIZE vykonané rovnako a preto i RND sú rovnaké. Na získanie náhodných čísiel by bolo lepšie nahradiť príkaz GOTO 10 príkazom GOTO 20.

Poznámka: väčšina verzií jazyka BASIC používa RND a RANDOMIZE na tvorbu náhodných čísiel, ale nie všetky ich získavajú rovnakým spôsobom.