Ich habe das folgende C-Programm um Zufallszahlen in einer Schleife zu erzeugen. Während dies für Ganzzahlen gut funktioniert, wenn ich versuche, ein zufälliges Double zwischen 0 und 1 zu erzeugen, bleibt der Wert während der Schleife konstant.Zufallsdoppelschleife bleibt konstant
- Warum passiert das?
- Wie kann ich ein zufälliges Double in [0, 1] innerhalb einer Schleife erzeugen?
Quelle:
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
int main(int argc, char** argv) {
srand(time(NULL));
for(int i=0; i<5; i++) {
printf("%d\n", rand());
}
for(int i=0; i<5; i++) {
printf("%d\n", (double) rand()/RAND_MAX);
}
}
Ausgang:
>gcc -O3 -o test test.c -lm
>./test
787380606
1210256636
1002592740
1410731589
737199770
-684428956
-684428956
-684428956
-684428956
-684428956
die * Formatspezifizierer * für 'printf()' ist nicht richtig. –
und außerdem: Was ist das Ergebnis von rand()/RAND_MAX? – dbrank0
@ dbran0 sollte das nicht die Zufallszahl zwischen 0 und 1 normalisieren? Korrigiere mich, wenn ich falsch liege –