Viele Zufallszahlen innerhalb von Mikrosekunden
-
Hallo,
ich habe eine Funktion die so oft hintereinander ausgeführt wird, dass srand(time(NULL)) oder srand(clock()) viel zu ungenau sind. Beide "seeds" werden nur etwa jede Sekunde erneuert, so dass ich jede Menge gleicher Zufallszahlen bekomme, die sich erst ab einer gewissen Menge in die nächste Zufallszahl ändern usw....
Frustrierend
Gibt's da 'ne Lösung, außer jeweils ein "delay" von 1000ms einzusetzen?
Rapthor
-
Lösung:
srand wird genau einmal im programm aufgerufen, danach nicht mehr!
-
long Seed = time(NULL); srand(SEED); for (int i=0; i < 100; i++) { int Zufallszahl = rand() % 6 + 1; cout << Zufallszahl << endl; }
dieses programm gibt hundert zufallszahlen aus, die im bereich von 1-6 liegen. dauert nicht mal ne sekunde :p
-
Danke, funzt!
-
Du könntest auch mal diesen Zufallszahlen Generator ausprobieren. Verwende ich in meinen Projekten und wird auch von PCSpielen wie z.Bsp. The Fall verwendet.
Links:
Original Homepage:
http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/emt.html
Hier in einer C++ Klasse:
http://www-personal.engin.umich.edu/~wagnerr/MersenneTwister.htmlrya.
Scorcher24
-
meine messungen ergabe, daß rand() doch schneller ist als der MT.
warum benutzt du nicht rand() ?
-
warscheinlich weil da steht:
...generation of random integers:
MersenneTwister.h 28.4 million per second
Inventors' C version 14.3 million per second
Cokus's optimized C version 16.6 million per second
Standard rand() 6.8 million per second...
-
volkard schrieb:
meine messungen ergabe, daß rand() doch schneller ist als der MT.
warum benutzt du nicht rand() ?...und weil die Verteilung vom MT sehr viel gleichmäßiger ist, und weil die Periode unwesentlich (>1e30!) größer ist. Auf beides kommt's eben manchmal auch an.
-
Miq schrieb:
...und weil die Verteilung vom MT sehr viel gleichmäßiger ist, und weil die Periode unwesentlich (>1e30!) größer ist. Auf beides kommt's eben manchmal auch an.
glaub ich net.
-
volkard schrieb:
glaub ich net.
http://www-personal.engin.umich.edu/~wagnerr/MersenneTwister.h schrieb:
// The Mersenne Twister is an algorithm for generating random numbers. It // was designed with consideration of the flaws in various other generators. // The period, 2^19937-1, and the order of equidistribution, 623 dimensions, // are far greater. The generator is also fast; it avoids multiplication and // division, and it benefits from caches and pipelines. For more information // see the inventors' web page at http://www.math.keio.ac.jp/~matumoto/emt.html