Condividi tramite


independent_bits_engine Class

Genera una sequenza di numeri casuali con un numero specificato di bit reimballando i bit i valori restituiti nel motore di 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;
    };

Parametri

  • Engine
    Il tipo archiviato il motore.

  • W
    Il parametro di modulo a W.

  • UIntType
    Il tipo di risultato intero senza segno.

Note

Questa classe modello viene descritto <random> che produce valori reimballando i bit i valori restituiti nel motore di base.Ogni Wrisultante al valore di bit consiste nei campi N combinati come segue:

  • I primi campi N0 sono costituiti dai bit meno significativi W0 valori restituiti dal motore di base inferiori a Y0, wrapping in ordine decrescente importanza.I valori troppo grandi vengono rimossi.

  • I campi rimanenti N - N0 sono costituiti dai bit meno significativi W0 + 1 valori restituiti dal motore di base inferiori a Y1, wrapping in ordine decrescente importanza.I valori troppo grandi vengono rimossi.

I parametri (diverso da W) sono determinati come segue:

  • èR l'intervallo dei valori restituiti dal motore di base (stored_eng.max() - stored_eng.min() + 1, presupponendo che non visualizzazione estesa si verifica.)

  • M è floor(log2(R)).

  • N inizialmente è 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 - Y0 quindi N viene incrementato e i quattro parametri precedenti sono rideterminati.

Lo stato del motore è lo stato stored_eng.Il valore dell'argomento di modello W deve essere maggiore di zero e non maggiore del numero di bit rappresentabili in result_type.

Requisiti

intestazione: <random>

Spazio dei nomi: deviazione standard

Vedere anche

Riferimenti

<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