Zainicjowanie generatora liczb losowych
Aby liczby losowe były inne przy każdym uruchomieniu programu, należy do generatora liczb losowych wprowadzić zarodek zmieniający się przy każdym wywołaniu programu. Najczęściej stosowanym rozwiązaniem jest wprowadzenie na początku programu jako zarodka aktualnego stanu zegara systemowego:
srand(time(NULL));
Przy użyciu takiej konstrukcji wymagane jest dołączenie pliku nagłówkowego time.h.
Liczby całkowite
Jeżeli losowane mają być liczby całkowite, zupełnie wystarczającym rozwiązaniem jest użycie operatora modulo %. Liczby całkowite z przedziału [a; b] uzyskuje się więc przez:
i = a + rand() % (b - a + 1);
Jeżeli komuś bardzo zależy na wykorzystaniu bardziej znaczących bitów z generatora, zamiast bitów mniej znaczących, których generowanie w bibliotece standardowej jest "niedoskonałe", można wykorzystać rzutowanie:
i = a + (int)(rand() / (RAND_MAX + 1.0) * (b - a + 1));
Stała RAND_MAX jest zdefiniowana w pliku nagłówkowym stdlib.h.
Liczby rzeczywiste
W zależności od oczekiwanego zachowania generatora na krawędziach zadanego przedziału można wyróżnić 4 schematy:
Przedział domknięty [a; b]:
x = (rand() / (float)RAND_MAX) * (b - a) + a;
Przedział prawostronnie domknięty (a; b]:
x = (rand() + 1.0) / (RAND_MAX + 1.0) * (b - a) + a;
Przedział lewostronnie domknięty [a; b):
x = (rand() / (RAND_MAX + 1.0)) * (b - a) + a;
Przedział otwarty (a; b):
x = ((rand() + 1.0) / (RAND_MAX + 2.0)) * (b - a) + a;
Oczywiście liczby losowe uzyskane w ten sposób nie pokrywają dokładnie całego przedziału liczb rzeczywistych, bo nie są losowane w sposób ciągły, lecz w odstępach co (b - a) / RANDMAX. Dla większości zastosowań w ramach niniejszego kursu jest to rozwiązanie wystarczające.