std::rand
Определено в заголовочном файле <cstdlib> | ||
|---|---|---|
int rand(); |
Возвращает псевдослучайное целочисленное значение из диапазона [0, RAND_MAX].
std::srand() инициализирует генератор псевдослучайных чисел, используемый rand(). Если rand() вызывается до любого вызова std::srand(), rand() ведет себя так, как будто он был инициализирован с помощью std::srand(1).
Каждый раз, когда rand() инициализируется с помощью std::srand(), он должен генерировать ту же последовательность значений при последующих вызовах.
Другие функции в стандартной библиотеке могут вызывать rand. Определяется реализацией, какие функции это делают.
Определяется реализацией, является ли rand() потокобезопасным.
Параметры
(нет)
Возвращаемое значение
Псевдослучайное целое число в диапазоне от 0 до RAND_MAX.
Примечания
Гарантии качества генерируемой случайной последовательности нет. В прошлом некоторые реализации rand() имели серьёзные недостатки в случайности, распределении и периоде генерируемой последовательности (в одном известном примере младший бит просто чередовался между 1 и 0 между вызовами).
rand() не рекомендуется для задач серьёзной генерации случайных чисел. Рекомендуется использовать средства генерации случайных чисел C++11 random number generation для замены rand().(с C++11)
Пример
#include <cstdlib>
#include <ctime>
#include <iostream>
int main()
{
std::srand(std::time(nullptr)); // use current time as seed for random generator
int random_value = std::rand();
std::cout << "Random value on [0, " << RAND_MAX << "]: " << random_value << "\n"
"Roll 6-sided dice 20 times: ";
for (int n = 0; n != 20; ++n)
{
int x = 7;
while (x > 6)
x = 1 + std::rand() / ((RAND_MAX + 1u) / 6); // Note: 1 + rand() % 6 is biased
std::cout << x << ' ';
}
std::cout << '\n';
}Возможный вывод:
Random value on [0, 2147483647]: 726295113 Roll 6-sided dice 20 times: 6 3 6 2 6 5 6 3 1 1 1 6 6 6 4 1 3 6 4 2
См. также
|
(C++11) | генерирует целочисленные значения, равномерно распределённые по диапазону (шаблон класса) |
| инициализирует генератор псевдослучайных чисел (функция) |
|
максимальное возможное значение, генерируемое std::rand (макроконстанта) |
|
| генерирует случайное целое число в заданном диапазоне (шаблон функции) |
|
Документация на C для rand |
|
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/numeric/random/rand