Wenn ich rand() mit srand() verwendet, um eine Zufallszahl in [0,1] zu generieren, gab es mir Zahlen wie: 0,70324, 0,70328, 0,70321 ...zufällige Gleitkommazahl ranging [0,1] in c
Sie waren Unterschied erst in den letzten ein oder zwei Ziffern, während ich zufällig float Zahlen zu erhalten wie 0.1,0.7,0.3 ....
gedacht war, wie ich, dass zufällige Fließkommazahl bekommen könnte wie statt Unterschied in der letzten Ziffer machen?
Hier ist mein Code:
#include <time.h>
#include <stdlib.h>
#include <stdio.h>
int main(){
int i;
float randomNum;
for ( i=0; i<10; i++){
srand((unsigned int)time(NULL));
randomNum = ((float)rand())/RAND_MAX;
printf("%f\n",randomNum);
}
return 0;
}
Bewegen Sie 'srand' außerhalb der Schleife. Rufen Sie es einmal am Anfang eines Programms auf. Sie setzen den RNG mit einer Sekunde Granularität zurück. –
Randnotiz: Selten habe ich gesehen, dass der Bereich '[0.0 bis 1.0]' benötigt wird, aber der Bereich '[0.0 1.0)' (Oberes Ende nicht 1.0) – chux
Hinweis: mit typischen 32-Bit 'int' und 32-bit 'float',' ((float) rand())/RAND_MAX; 'wird nicht das gleiche Vorkommen von' float' Werten liefern. '1.0f' wird aufgrund der Rundung von' (float) rand() '64 mal häufiger vorkommen als' 0.0f' – chux