std::seed_seq
Von cppreference.com
| Definiert in Header <random> |
||
| class seed_seq; |
(seit C++11) | |
std::seed_seq verarbeitet eine Sequenz von ganzzahligen Daten und erzeugt basierend auf diesen Daten eine angeforderte Anzahl von 32-Bit-Ganzzahlwerten. Die erzeugten Werte werden über den gesamten 32-Bit-Bereich verteilt, auch wenn die verarbeiteten Werte nahe beieinander liegen.
Es bietet eine Möglichkeit, eine große Anzahl von Zufallszahlengeneratoren zu initialisieren oder einen Generator zu initialisieren, der viel Entropie benötigt, wenn nur ein kleiner Seed oder eine schlecht verteilte initiale Seed-Sequenz zur Verfügung steht.
std::seed_seq erfüllt die Anforderungen von SeedSequence.
Inhalt |
[bearbeiten] Verschachtelte Typen
| Typ | Definition |
result_type
|
std::uint_least32_t |
[bearbeiten] Datenmember
| Mitglied | Beschreibung |
std::vector<result_type> v |
die zugrunde liegende Seed-Sequenz ((exposition-only member object*) |
[bearbeiten] Member-Funktionen
konstruiert und initialisiert das std::seed_seq-Objekt(öffentliche Memberfunktion) | |
| operator= [gelöscht] |
std::seed_seq ist nicht zuweisbar(öffentliche Memberfunktion) |
| berechnet die bias-bereinigten, gleichmäßig verteilten 32-Bit-Werte (öffentliche Memberfunktion) | |
| erhält die Anzahl der gespeicherten 32-Bit-Werte (öffentliche Memberfunktion) | |
| kopiert alle gespeicherten 32-Bit-Werte (öffentliche Memberfunktion) |
[bearbeiten] Beispiel
Führen Sie diesen Code aus
#include <cstdint> #include <iostream> #include <random> int main() { std::seed_seq seq{1, 2, 3, 4, 5}; std::vector<std::uint32_t> seeds(10); seq.generate(seeds.begin(), seeds.end()); for (std::uint32_t n : seeds) std::cout << n << '\n'; }
Mögliche Ausgabe
4204997637 4246533866 1856049002 1129615051 690460811 1075771511 46783058 3904109078 1534123438 1495905678