2 Stimmen

Wie schlecht ist rand aus stdlib.h?

Ich mache eine Monte-Carlo-Simulation in C++ und habe Boost für Zufallszahlen verwendet. Ich habe auch ein bisschen GSL benutzt. Aber es hat sich herausgestellt, dass die Generierung von Zufallszahlen eine meiner größten Laufzeitineffizienzen ist, also habe ich einfach angefangen, die gute alte rand() de cstdlib .

Wie hoch ist das Risiko, dass meine Simulation schlechte Zufallszahlen aufweist? Ich verwende etwa 10^6 oder 10^7 Zufallszahlenproben.

0voto

Ray Toal Punkte 82654

Es gibt zwei Probleme: (1) da RAND_MAX nur garantiert mindestens 32767 beträgt, gibt es möglicherweise nicht viele mögliche Werte (was für einige Anwendungen nicht unbedingt schlecht ist), und (2) schlechte Implementierungen.

Wenn Sie einen so genannten sicheren Zufallszahlengenerator benötigen, müssen Sie sich woanders umsehen. Aber für viele Anwendungen, rand() ist ausreichend.

Ein Blog-Beitrag, der Ihre Bedenken aufgreift, ist http://eternallyconfuzzled.com/arts/jsw_art_rand.aspx .

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X