std::rand
Определено в заголовочном файле <cstdlib>
|
||
int rand(); |
||
Возвращает псевдослучайное целочисленное значение между 0 и RAND_MAX (включая 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 вместо rand(). (начиная с C++11)
[править] Пример
#include <cstdlib> #include <ctime> #include <iostream> int main() { std::srand(std::time(nullptr)); // использовать текущее время в качестве // начального значения для генератора случайных чисел int random_variable = std::rand(); std::cout << "Случайное значение в диапазоне [0, " << RAND_MAX << "]: " << random_variable << '\n'; // бросаем 6-гранный кубик 20 раз for (int n=0; n != 20; ++n) { int x = 7; while(x > 6) x = 1 + std::rand()/((RAND_MAX + 1u)/6); // Примечание: 1+rand()%6 // имеет смещение std::cout << x << ' '; } }
Возможный вывод:
Случайное значение в диапазоне [0, 2147483647]: 726295113 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
|