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) |
создаёт новую распределённую величину (общедоступная функция-член) |
|
(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/w/cpp/numeric/random/uniform_int_distribution