N
Size: a a a
N
Е
D
N
AP
КП
#define RAND_MAX 20
SH
#define RAND_MAX 20
AB
#define RAND_MAX 20
КП
КП
SH
КП
ИМЯ
rand, rand_r, srand - генератор псевдослучайных чисел
ОБЗОР
#include <stdlib.h>
int rand(void);
int rand_r(unsigned int *seedp);
void srand(unsigned int seed);
Требования макроса тестирования свойств для glibc (см. feature_test_macros(7)):
rand_r():
начиная с glibc 2.24:
_POSIX_C_SOURCE >= 199506L
в glibc 2.23 и старее
_POSIX_C_SOURCE
ОПИСАНИЕ
Функция rand() возвращает псевдослучайное целое число в диапазоне от нуля до RAND_MAX включительно (т. е., из математического диапазона [0, RAND_MAX]).
Функция srand() устанавливает свой аргумент как основу (seed) для новой последовательности псевдослучайных целых чисел, возвращаемых функцией rand(). Эту последовательность можно воспроизвести. Для этого необходимо вызвать srand() с той же величиной основы.
Если основа не задана, то функция rand() автоматически устанавливает её равной 1.
Функция rand() не реентерабельная, так как она использует скрытое состояние, которое изменяется с каждым вызовом. Это может быть как просто значение основы, так и что-то более сложное. Чтобы получить воспроизводимое поведение в многонитевом приложении такое
состояние нужно создать явным образом; это можно сделать с помощью реентерабельной функции rand_r().
Как и rand(), rand_r() возвращает псевдослучайное целое число из диапазона [0, RAND_MAX]. Аргумент seedp является указателем на число unsigned int, которое используется для хранения состояния между вызовами. Если rand_r() вызывается с одинаковым начальным
значением целого, на которое указывает seedp, и это значение не изменяется между вызовами, то результатом будет одинаковая псевдослучайная последовательность.
Значение, на которое указывает аргумент seedp для rand_r(), предоставляет только очень малую часть состояния, поэтому данная функция будет очень не случайным псевдослучайным генератором. Используйте вместо неё drand48_r(3).
AP
КП
КП
DM
#define RAND_MAX 20
КП