std:: discrete_distribution
|
Definido en el encabezado
<random>
|
||
|
template
<
class
IntType
=
int
>
class discrete_distribution ; |
(desde C++11) | |
std::discrete_distribution
produce enteros aleatorios en el intervalo
[
0
,
n
)
, donde la probabilidad de cada entero individual
i
se define como
w
i
/S
, es decir, el
peso
del
i
-ésimo entero dividido por la suma de todos los
n
pesos.
std::discrete_distribution
satisface todos los requisitos de
RandomNumberDistribution
.
Contenidos |
Parámetros de plantilla
| IntType | - | El tipo de resultado generado por el generador. El efecto es indefinido si este no es uno de short , int , long , long long , unsigned short , unsigned int , unsigned long , o unsigned long long . |
Tipos de miembros
| Tipo de miembro | Definición |
result_type
(C++11)
|
IntType |
param_type
(C++11)
|
el tipo del conjunto de parámetros, ver RandomNumberDistribution . |
Funciones miembro
|
(C++11)
|
construye una nueva distribución
(función miembro pública) |
|
(C++11)
|
reinicia el estado interno de la distribución
(función miembro pública) |
Generación |
|
|
(C++11)
|
genera el siguiente número aleatorio en la distribución
(función miembro pública) |
Características |
|
|
obtiene la lista de probabilidades
(función miembro pública) |
|
|
(C++11)
|
obtiene o establece el objeto parámetro de la distribución
(función miembro pública) |
|
(C++11)
|
devuelve el valor mínimo potencialmente generado
(función miembro pública) |
|
(C++11)
|
devuelve el valor máximo potencialmente generado
(función miembro pública) |
Funciones no miembro
|
(C++11)
(C++11)
(removed in C++20)
|
compara dos objetos de distribución
(función) |
|
(C++11)
|
realiza entrada y salida por flujo en distribución de números pseudoaleatorios
(plantilla de función) |
Ejemplo
#include <iomanip> #include <iostream> #include <map> #include <random> int main() { std::random_device rd; std::mt19937 gen(rd()); std::discrete_distribution<> d({40, 10, 10, 40}); std::map<int, int> map; for (int n = 0; n < 1e4; ++n) ++map[d(gen)]; for (const auto& [num, count] : map) std::cout << num << " generated " << std::setw(4) << count << " times\n"; }
Salida posible:
0 generated 4037 times 1 generated 962 times 2 generated 1030 times 3 generated 3971 times