Soll ich eine zufällige Engine verwenden, die aus std :: random_device stammt, oder jedes Mal std :: random_device

Ich habe eine Klasse, die zwei Quellen der Zufälligkeit enthält.

std::random_device rd;
std::mt19937 random_engine;

Ich säte diestd::mt19937 mit einem Anruf anstd::random_device. Wenn ich eine Nummer generieren möchte und mir die Wiederholbarkeit egal ist, sollte ich anrufenrd() oderrandom_engine()?

Ich bin sicher, dass in meinem speziellen Fall beide gut funktionieren würden, da dies in einem Netzwerkcode genannt wird, in dem die Leistung nicht besonders hoch ist und die Ergebnisse nicht besonders empfindlich sind. Ich bin jedoch an einigen "Faustregeln" interessiert, wann Hardware-Entropie und wann Pseudo-Zufallszahlen verwendet werden sollen.

Derzeit benutze ich nurstd::random_device um meine zu säenstd::mt19937 und jede Zufallszahlengenerierung, die ich für mein Programm benötige, benutze ich diestd::mt19937 Motor.

edit: Hier ist eine Erklärung für genau das, wofür ich dieses Beispiel verwende:

Dies ist für ein Spielprogramm. In diesem speziellen Spiel kann der Benutzer sein "Team" anpassen, bevor er eine Runde gegen einen Gegner beginnt. Zum Einrichten eines Kampfes gehört auch das Senden eines Teams an den Server. Mein Programm besteht aus mehreren Teams und bestimmt anhand der Zufallszahl, welches Team geladen werden soll. Jede neue Schlacht ruft nachstd::random_device den Pseudozufallszahlengenerator zu setzen. Ich protokolliere den Anfangszustand des Kampfes, der dieses Team, das ich zufällig auswähle, und die Ausgangssaat enthält.

Die bestimmte Zufallszahl, nach der ich in dieser Frage frage, ist für die zufällige Teamauswahl bestimmt (wobei es von Vorteil ist, wenn der Gegner nicht im Voraus weiß, welches Team ich benutze, aber nicht geschäftskritisch ist), aber was ich Ich bin wirklich auf der Suche nach ist eine Faustregel. Ist es in Ordnung, immer zu verwendenstd::random_device Wenn ich keine Wiederholbarkeit meiner Zahlen benötige, oder besteht die reale Gefahr, dass Entropie schneller verbraucht wird, als sie gesammelt werden kann?

Antworten auf die Frage(6)

Ihre Antwort auf die Frage