Spec-Zone.ru › C++

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

См. также

uniform_int_distribution
(C++11)
генерирует целочисленные значения, равномерно распределённые по диапазону
(шаблон класса)
srand
инициализирует генератор псевдослучайных чисел
(функция)
RAND_MAX
максимальное возможное значение, генерируемое std::rand
(макроконстанта)
randint
генерирует случайное целое число в заданном диапазоне
(шаблон функции)
Документация на C для rand

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/numeric/random/rand

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API