Freigeben über


independent_bits_engine Class

Generiert eine zufällige Zahlenfolge mit einer angegebenen Anzahl von Bits durch die Erneutes Packen von Bits von den Werten, die durch das Modul niedriges zurückgegeben werden.

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;
    };

Parameter

  • Engine
    Der gespeicherte Motortyp.

  • W
    Der W-Modulparameter.

  • UIntType
    Der vorzeichenlose Ergebnistyp ganze Zahl.

Hinweise

Diese Vorlagenklasse beschreibt <random>, die - Werte erzeugt, indem Bits von den Werten einpackt, die durch das Modul niedriges zurückgegeben werden.Jedes resultierende W- Bitwert besteht aus N Feldern, die kombiniert werden, wie folgt:

  • Die ersten N0 Felder bestehen aus den niedrigwertigen W0 Bits von den Werten, die von der Basisklasse des Modul zurückgegeben werden, die kleiner als Y0 sind, in absteigender Reihenfolge gepackt aus Schritt.Werte, die zu groß sind, werden verworfen.

  • Die übrigen N - N0 Felder bestehen aus den niedrigwertigen W0 + 1 Bits von den Werten, die von der Basisklasse des Modul zurückgegeben werden, die kleiner als Y1 sind, in absteigender Reihenfolge gepackt aus Schritt.Werte, die zu groß sind, werden verworfen.

Die Parameter (außer W) bestimmt werden, wie folgt:

  • R ist die vollständige Auswahl von den Werten, die von der Basisklasse des Modul zurückgegeben werden (stored_eng.max() - stored_eng.min() + 1, keine zyklische Adressfolge vorausgesetzt wird) auf.

  • M ist floor(log2(R)).

  • N ist zunächst W / M + (W % M != 0).

  • W0 ist W / N.

  • N0 ist N - W % N.

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

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

  • Wenn Y0 / N < R - Y0 dann N erhöht wird und die vorherigen vier Parameter werden neu bestimmt.

Der Zustand des Moduls ist der Zustand von stored_eng.Der Wert des Vorlagenarguments W muss als null und nicht größer als die Anzahl der Bits größer sein, die in result_type darstellbar sind.

Anforderungen

Header: <random>

Namespace: std

Siehe auch

Referenz

<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