¿Le resultó útil esta página?
Sus comentarios sobre este contenido son muy importantes. Háganos saber su opinión.
¿Tiene comentarios adicionales?
Caracteres restantes: 1500
Exportar (0) Imprimir
Expandir todo
Este artículo se tradujo de forma manual. Mueva el puntero sobre las frases del artículo para ver el texto original. Más información.
Traducción
Original

uniform_int_distribution (Clase)

Genera una distribución de enteros uniforme (cada valor es igual de probable) en un intervalo de salida que es inclusivo-inclusivo.

template<class IntType = int> class uniform_int_distribution { public:     // types     typedef IntType result_type;     struct param_type;     // constructors and reset functions     explicit uniform_int_distribution(IntType a = 0, IntType b = numeric_limits<IntType>::max());     explicit uniform_int_distribution(const param_type& parm);     void reset();     // generating functions     template<class URNG>     result_type operator()(URNG& gen);     template<class URNG>     result_type operator()(URNG& gen, const param_type& parm);     // property functions     result_type a() const;     result_type b() const;     param_type param() const;     void param(const param_type& parm);     result_type min() const;     result_type max() const; };

IntType

Un tipo de resultado de entero, el valor predeterminado es int. Para obtener más información sobre los tipos posibles, vea <random>.

La clase de plantilla describe una distribución inclusiva-inclusiva que produce valores de un tipo entero especificado por el usuario con una distribución, de modo que todos los valores son igual de probables. La tabla siguiente incluye vínculos a artículos sobre miembros individuales.

uniform_int_distribution::uniform_int_distribution

uniform_int_distribution::a

uniform_int_distribution::param

uniform_int_distribution::operator()

uniform_int_distribution::b

uniform_int_distribution::param_type

El miembro de propiedad a() devuelve el límite mínimo de la distribución almacenado actualmente, mientras que b() devuelve el límite máximo almacenado actualmente. Para esta clase de distribución, estos valores mínimo y máximo son los mismos que los devueltos por las funciones de propiedad común min() y max() descritas en el tema <random>.

Para obtener más información sobre las clases de distribución y sus miembros, vea <random>.

 

// compile with: /EHsc /W4
#include <random> 
#include <iostream>
#include <iomanip>
#include <string>
#include <map>

void test(const int a, const int b, const int s) {

    // uncomment to use a non-deterministic seed
    //    std::random_device rd;
    //    std::mt19937 gen(rd());
    std::mt19937 gen(1729);

    std::uniform_int_distribution<> distr(a, b);

    std::cout << "lower bound == " << distr.a() << std::endl;
    std::cout << "upper bound == " << distr.b() << std::endl;

    // generate the distribution as a histogram
    std::map<int, int> histogram;
    for (int i = 0; i < s; ++i) {
        ++histogram[distr(gen)];
    }

    // print results
    std::cout << "Distribution for " << s << " samples:" << std::endl;
    for (const auto& elem : histogram) {
        std::cout << std::setw(5) << elem.first << ' ' << std::string(elem.second, ':') << std::endl;
    }
    std::cout << std::endl;
}

int main()
{
    int a_dist = 1;
    int b_dist = 10;

    int samples = 100;

    std::cout << "Use CTRL-Z to bypass data entry and run using default values." << std::endl;
    std::cout << "Enter an integer value for the lower bound of the distribution: ";
    std::cin >> a_dist;
    std::cout << "Enter an integer value for the upper bound of the distribution: ";
    std::cin >> b_dist;
    std::cout << "Enter an integer value for the sample count: ";
    std::cin >> samples;

    test(a_dist, b_dist, samples);
}

              
                Utilice CTRL-Z para omitir la entrada de datos y ejecutarlo con los valores predeterminados.
                 Introduzca un valor entero para el límite inferior de la distribución: 0
Introduzca un valor entero para el límite superior de la distribución: 12
Introduzca un valor entero para el recuento de muestra: 200
límite inferior == 0
límite superior == 12
Distribución para 200 muestras:
    0 :::::::::::::::
    1 :::::::::::::::::::::
    2 ::::::::::::::::::
    3 :::::::::::::::
    4 :::::::
    5 :::::::::::::::::::::
    6 :::::::::::::
    7 ::::::::::
    8 :::::::::::::::
    9 :::::::::::::
   10 ::::::::::::::::::::::
   11 :::::::::::::
   12 :::::::::::::::::  

Encabezado: <random>

Espacio de nombres: std

Adiciones de comunidad

Mostrar:
© 2015 Microsoft