Partilhar via


independent_bits_engine Class

Gera uma seqüência aleatório de números com um número especificado de bits reembalando bit dos valores retornados pelo mecanismo 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
    O tipo do mecanismo armazenado.

  • W
    O parâmetro do mecanismo de W.

  • UIntType
    O tipo do resultado inteiro sem sinal de.

Comentários

Esta classe de modelo descreve <random> que produz valores reembalando bit dos valores retornados pelo mecanismo base.Cada W- o valor resultante consiste nos campos de bits de N combinados como segue:

  • Os primeiros campos de N0 consistem nos bits de W0 de ordem baixa dos valores retornados pelo mecanismo base que é menor que Y0, empacotado em ordem decrescente de significado.Os valores que são muito grandes são descartados.

  • Os campos restantes de N - N0 consistem nos bits de W0 + 1 de ordem baixa dos valores retornados pelo mecanismo base que é menor que Y1, empacotado em ordem decrescente de significado.Os valores que são muito grandes são descartados.

Os parâmetros (diferente W) são determinados como segue:

  • R é o intervalo de valores completo retornado pelo mecanismo base (stored_eng.max() - stored_eng.min() + 1, não supondo que nenhum wraparound ocorre.)

  • M é floor(log2(R)).

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

  • W0 é W / N.

  • N0 é N - W % N.

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

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

  • Se Y0 / N < R - Y0N é incrementado o e os quatro parâmetros anteriores redetermined.

O estado do mecanismo é o estado de stored_eng.O valor do argumento W de modelo deve ser maior que zero e não maior que o número de bits representável em result_type.

Requisitos

Cabeçalho: <random>

namespace: STD

Consulte também

Referência

<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