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
independent_bits_engine::base_type
independent_bits_engine::discard
independent_bits_engine::independent_bits_engine