Compartir a través de


independent_bits_engine Class

genera una secuencia aleatoria de números con un número especificado de bits reembalando los bits de los valores devueltos por su motor base.

template<class Engine,
    size_t W, class UIntType>
    class independent_bits_engine {
public:
    typedef Engine base_type;
    typedef typename base_type::result_type result_type;
    independent_bits_engine();
    explicit independent_bits_engine(const base_type& eng);
    explicit independent_bits_engine(result_type x0);
    explicit independent_bits_engine(seed_seq& seq);
    void seed();
    void seed(result_type x0);
    void seed(seed_seq& seq);
    const base_type& base() const;
    static const result_type min();
    static const result_type max();
    result_type operator()();
    void discard(unsigned long long count);
private:
    Engine stored_eng;
    int count;
    };

Parámetros

  • Engine
    El tipo almacenado de motor.

  • W
    El parámetro del motor del w.

  • UIntType
    El tipo de resultado de entero sin signo.

Comentarios

esta clase de plantilla describe <random> que genera valores reembalando los bits de los valores devueltos por su motor base.Cada Wresultante (el valor de bit consta de los campos de N combinados como sigue:

  • Los primeros campos de N0 constan de los bits de orden inferior de W0 de los valores que devuelve el motor base que menos que Y0, empaquetado en orden descendente de importancia.se descartan los valores que son demasiado grandes.

  • Los campos restantes de N - N0 constan de los bits de orden inferior de W0 + 1 de los valores que devuelve el motor base que menos que Y1, empaquetado en orden descendente de importancia.se descartan los valores que son demasiado grandes.

Se determinan los parámetros (distinto de W) como sigue:

  • R es el intervalo de valores completo devuelto por el motor base (stored_eng.max() - stored_eng.min() + 1, no suponiendo que ningún cruzado aparece.)

  • M es floor(log2(R)).

  • N inicialmente es W / M + (W % M != 0).

  • W0 es W / N.

  • N0 es N - W % N.

  • Y0 es (R >> W0) << W0.

  • Y1 es (R >> W0 + 1) << W0 + 1.

  • Si Y0 / N < R - Y0 a N se incrementa y se redeterminan los cuatro parámetros anteriores.

El estado del motor es el estado de stored_eng.El valor del argumento W de plantilla debe ser mayor que cero y no mayor que el número de bits representables en result_type.

Requisitos

encabezado: <aleatorio>

espacio de nombres: std

Vea también

Referencia

<random>

independent_bits_engine::base

independent_bits_engine::base_type

independent_bits_engine::discard

independent_bits_engine::independent_bits_engine

independent_bits_engine::operator()

independent_bits_engine::seed