Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Génère une séquence de nombres aléatoires avec un nombre de bits spécifié en réemballant de bits des valeurs retournées par le moteur de 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;
};
Paramètres
Engine
Le type enregistré du moteur.W
Le paramètre du moteur de W.UIntType
Le type de résultat d'entier non signé.
Notes
Cette classe de modèle décrit <random> qui produit des valeurs en réemballant de bits des valeurs retournées par le moteur de base.Chaque Wrésultant - la valeur de bits se compose des champs d' N combinés comme suit :
Les premiers champs d' N0 incluent les bits de poids faible d' W0 les valeurs retournées par le moteur de base qui sont moins qu' Y0compressée, dans l'ordre décroissant d'importance.Les valeurs qui sont trop longues sont ignorées.
Les champs restants d' N - N0 incluent les bits de poids faible d' W0 + 1 les valeurs retournées par le moteur de base qui sont moins qu' Y1compressée, dans l'ordre décroissant d'importance.Les valeurs qui sont trop longues sont ignorées.
Les paramètres (autre que W) sont déterminés comme suit :
R est la plage de valeurs complète retournée par le moteur de base (stored_eng.max() - stored_eng.min() + 1, n'en supposant que pas de boucle se produit.)
M a la valeur floor(log2(R)).
N est initialement W / M + (W % M != 0).
W0 a la valeur W / N.
N0 a la valeur N - W % N.
Y0 a la valeur (R >> W0) << W0.
Y1 a la valeur (R >> W0 + 1) << W0 + 1.
Si Y0 / N < R - Y0 ensuite N est incrémenté et les quatre paramètres précédents sont redéterminés.
L'état du moteur est l'état d' stored_eng.La valeur de l'argument template W doit être supérieure à zéro et non supérieure au nombre de bits représentables dans result_type.
Configuration requise
en-tête : <random>
l'espace de noms : DST
Voir aussi
Référence
independent_bits_engine::base_type
independent_bits_engine::discard
independent_bits_engine::independent_bits_engine