Spec-Zone.ru › C++

std::uniform_int_distribution

Определено в заголовке <random>
template< class IntType = int >
class uniform_int_distribution;
(с C++11)

Производит случайные целые значения \(\small i\)i, равномерно распределённые на замкнутом интервале \(\small[a, b]\)[a, b], то есть распределённые в соответствии с дискретной функцией вероятности \({\small P(i|a,b) =}\frac{1}{b - a + 1}\)P(i|a,b) =

1/b − a + 1.

std::uniform_int_distribution удовлетворяет всем требованиям RandomNumberDistribution.

Параметры шаблона

IntType - Тип результата, генерируемый генератором. Эффект не определён, если это не один из short, int, long, long long, unsigned short, unsigned int, unsigned long, или unsigned long long.

Типы членов

Тип члена Определение
result_type (C++11) IntType
param_type (C++11) тип набора параметров, см. RandomNumberDistribution.

Члены-функции

(конструктор)
(C++11)
создаёт новую распределённую величину
(общедоступная функция-член)
reset
(C++11)
сбрасывает внутреннее состояние распределения
(общедоступная функция-член)
Генерация
operator()
(C++11)
генерирует следующее случайное число в распределении
(общедоступная функция-член)
Характеристики
ab
(C++11)
возвращает параметры распределения
(общедоступная функция-член)
param
(C++11)
получает или устанавливает объект параметра распределения
(общедоступная функция-член)
min
(C++11)
возвращает минимальное потенциально сгенерированное значение
(общедоступная функция-член)
max
(C++11)
возвращает максимальное потенциально сгенерированное значение
(общедоступная функция-член)

Функции вне класса

operator==operator!=
(C++11)(C++11)(удалена в C++20)
сравнивает два объекта распределения
(функция)
operator<<operator>>
(C++11)
выполняет ввод и вывод в поток псевдослучайного распределения
(шаблон функции)

Пример

Эта программа моделирует бросание шестигранных костей.

#include <iostream>
#include <random>
 
int main()
{
    std::random_device rd;  // a seed source for the random number engine
    std::mt19937 gen(rd()); // mersenne_twister_engine seeded with rd()
    std::uniform_int_distribution<> distrib(1, 6);
 
    // Use distrib to transform the random unsigned int
    // generated by gen into an int in [1, 6]
    for (int n = 0; n != 10; ++n)
        std::cout << distrib(gen) << ' ';
    std::cout << '\n';
}

Возможный вывод:

1 1 6 5 2 2 5 5 6 2

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

Spec-Zone.ru

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