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, longlong, unsignedshort, unsignedint, unsignedlong или unsignedlonglong. |
Типы-члены
| Тип-член | Определение |
|---|---|
result_type (C++11) | IntType |
param_type (C++11) | тип набора параметров, см. RandomNumberDistribution. |
Функции-члены
|
(C++11) | создаёт новое распределение (открытая функция-член) |
|
(C++11) | сбрасывает внутреннее состояние распределения (открытая функция-член) |
Генерация |
|
|
(C++11) | генерирует следующее случайное число согласно распределению (открытая функция-член) |
Характеристики |
|
|
(C++11) | возвращает параметры распределения (открытая функция-член) |
|
(C++11) | получает или задаёт объект параметров распределения (открытая функция-член) |
|
(C++11) | возвращает минимальное возможное генерируемое значение (открытая функция-член) |
|
(C++11) | возвращает максимальное возможное генерируемое значение (открытая функция-член) |
Функции вне класса
|
(C++11)(C++11)(удалена в C++20) | сравнивает два объекта распределения (функция) |
|
(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/cpp/numeric/random/uniform_int_distribution