Zufallsgenerator
-
Hi Leute!
Ich habe einen Zufallsgenerator programmiert.
der liefert so einigermaßen zufällige Zahlen.
nur nicht ganz in dem Raum der erwartet wird, das liegt wohl an der rand().int random(int min,int max) { srand((unsigned)GetTickCount()); float factor[10]; float avg; for (int i=0;i<10;i++) { factor[i] = (float)rand() / (float)RAND_MAX; avg += factor[i]; } avg /= 10; return min+(int)((float)(max-min)*(float)avg); }weiß jemand einen guten Generator, den man sich als snippet in sein programm einbauen kann?
thx.
-
Sieht relativ kompliziert aus und über diese avg-Geschichte zerhauts dir bestimmt die Verteilung.
int random(int min, int max){ return result = (rand() % (max - min + 1) + min); }Den srand() würd ich außerhalb der Funktion machen, sonst hast du bei jedem Aufruf der Funktion random() eine neue Folge. Dass es da keine vernünftige (semi-)uniforme Verteilung gibt, ist klar.
Ansonsten ist rand() schon ausreichend. Wenn du einen anderen probieren willst, google mal MersenneTwister. Und für Crypto-Anwendungen sind die alle nicht geeignet...
gruß
Martin
-
zeigerzeiger
-
Ah, genialer Artikel!
-
Hier ist noch was zum Thema
:
http://www.c-plusplus.net/forum/viewtopic-var-t-is-39343.html
http://www.c-plusplus.net/forum/viewtopic-var-t-is-39331.html
http://www.c-plusplus.net/forum/viewtopic-var-t-is-39344.html