rand() w C++

Słownik kwalifikacji INF.04 - Projektowanie, programowanie i testowanie aplikacji

Czym jest rand() w C++?

rand() to funkcja języka C/C++, która zwraca liczbę całkowitą pseudolosową. Znajduje się w bibliotece <cstdlib>.

Wynik funkcji rand() mieści się w zakresie od 0 do RAND_MAX, gdzie RAND_MAX jest stałą określającą największą możliwą wartość zwracaną przez tę funkcję.

Przykład użycia

#include <cstdlib>
#include <iostream>

int main() {
    int liczba = rand();
    std::cout << liczba;
    return 0;
}

Ograniczenie zakresu przez modulo

Często stosuje się operator modulo %, aby ograniczyć zakres losowanej liczby:

int liczba = rand() % 1000;

Wyrażenie rand() % 1000 oznacza resztę z dzielenia wyniku rand() przez 1000. Możliwe wartości reszty to:

  • 0,
  • 1,
  • 2,
  • ...,
  • 999.

Dlatego zmienna liczba nigdy nie otrzyma wartości 1000. Największą możliwą wartością jest 999.

Pseudolosowość

Liczby generowane przez rand() nie są naprawdę losowe, tylko pseudolosowe. Oznacza to, że są wyznaczane przez algorytm. Jeśli program nie ustawi ziarna generatora, np. przez srand(), sekwencja wyników może być taka sama przy każdym uruchomieniu programu.

srand(time(NULL));
int liczba = rand() % 1000;

Ważne na egzaminie

Dla zapisu:

int liczba = rand() % n;

możliwe wartości należą do przedziału od 0 do n - 1.