rand
Определено в заголовке <stdlib.h> | ||
|---|---|---|
int rand(); |
Возвращает псевдослучайное целое значение между 0 и RAND_MAX (включая 0 и RAND_MAX).
srand() инициализирует генератор псевдослучайных чисел, используемый rand(). Если rand() используется до любого вызова srand(), rand() ведет себя так, как будто он был инициализирован с srand(1). Каждый раз, когда rand() инициализируется с srand(), он должен генерировать ту же последовательность значений.
rand() не гарантируется, что он потокобезопасен.
Параметры
(нет)
Возвращаемое значение
Псевдослучайное целое значение между 0 и RAND_MAX, включая границы.
Примечания
Не гарантируется качество генерируемой случайной последовательности. В прошлом некоторые реализации rand() имели серьезные недостатки в случайности, распределении и периоде генерируемой последовательности (в одном известном примере младший бит просто чередовался между 1 и 0 между вызовами). rand() не рекомендуется для серьезных потребностей в генерации случайных чисел, таких как криптография.
POSIX требует, чтобы период генератора псевдослучайных чисел, используемого rand был не менее 232.
POSIX предлагал потокобезопасную версию rand под названием rand_r, которая устарела в пользу семейства функций drand48.
Пример
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void)
{
srand(time(NULL)); // use current time as seed for random generator
int random_variable = rand();
printf("Random value on [0,%d]: %d\n", RAND_MAX, random_variable);
// roll a 6-sided die 20 times
for (int n=0; n != 20; ++n) {
int x = 7;
while(x > 6)
x = 1 + rand()/((RAND_MAX + 1u)/6); // Note: 1+rand()%6 is biased
printf("%d ", x);
}
}Возможный вывод:
Random value on [0,2147483647]: 448749574 3 1 3 1 4 2 2 1 3 6 4 4 3 1 6 2 3 2 6 1
Ссылки
- Стандарт C17 (ISO/IEC 9899:2018):
- 7.22.2.1 Функция rand (стр. 252)
- Стандарт C11 (ISO/IEC 9899:2011):
- 7.22.2.1 Функция rand (стр. 346)
- Стандарт C99 (ISO/IEC 9899:1999):
- 7.20.2.1 Функция rand (стр. 312)
- Стандарт C89/C90 (ISO/IEC 9899:1990):
- 4.10.2.1 Функция rand
См. также
| инициализирует генератор псевдослучайных чисел (функция) |
|
максимальное возможное значение, генерируемое rand() (макроконстанта) |
|
Документация C++ для rand |
|
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/c/numeric/random/rand