RANDOM(3)

NAZWA
random, srandom, initstate, setstate - generator liczb losowych

SKŁADNIA
#include <stdlib.h>

long int random(void);
void srandom(unsigned int seed);
char *initstate(unsigned int seed, char *state, size_t n);
char *setstate(char *state);

OPIS
Funkcja random() korzysta z generatora liczb losowych opartego na nieliniowych addytywnych przesunięciach, stosującego domyślną tablicę o rozmiarze 31 długich liczb całkowitych do zwracania kolejnych liczb pseudolosowych z zakresu pomiędzy 0 a RAND_MAX. Okres tego generatora liczb losowych jest bardzo duży, wynosi około 16*((2**31)-1).

Funkcja srandom() ustawia swój argument jako wartość początkową dla nowego ciągu pseudolosowych liczb całkowitych zwracanych przez random(). Ciągi te są powtarzalne poprzez wywołanie srandom() z tą samą wartością początkową. Jeśli nie podano wartości początkowej, funkcja random() automatycznie ustawia tę wartość na 1.

Funkcja initstate() pozwala na inicjalizację tablicy stanów state w celu wykorzystania jej przez random(). initstate() wykorzystuje rozmiar tablicy stanów n do podjęcia decyzji o tym, jakiego wymyślnego generatora liczb losowych powinna używać — im większa tablica stanów, tym lepszy będzie generator liczb losowych. seed jest wartością początkową dla inicjalizacji, która określa punkt startu ciągu generatora liczb losowych oaz zapewnia restart w tym samym punkcie.

Funkcja setstate() zmienia tablicę stanów wykorzystywaną przez funkcję random(). Tablica stanu state jest używana do generacji liczb losowych aż do następnego wywołania initstate() lub setstate(). state musi być uprzednio zainicjalizowana za pomocą initstate() lub być wynikiem wcześniejszego wywołania setstate().

WARTOŚĆ ZWRACANA
Funkcja random() zwraca wartości pomiędzy 0 a RAND_MAX. Funkcja srandom() nie zwraca żadnej wartości. Funkcje initstate() i setstate() zwracają wskaźnik do poprzedniej tablicy stanów lub NULL w przypadku błędu.

BŁĘDY

EINVAL
    Podano mniejszą niż 8-bajtową tablicę stanów dla initstate().

UWAGI
Obecnie "optymalnymi" wartościami dla rozmiaru tablicy stanów n są 8, 32, 64, 128 i 256 bajtów; inne wartości będą zaokrąglane w dół do najbliższej znanej wartości. Użycie mniej niż 8 bajtów spowoduje błąd.

ZGODNE Z
BSD 4.3

ZOBACZ TAKŻE
rand(3), srand(3)