Zitat:
|
Zitat von Anonymous Stell mal meinen Code rein, den ich bis jetzt geschafft habe, aber er spuckt als Zufallszahl immer nur die 1 raus?
int Zufallszahl(int n)
{
/*
int zufall=(double(srand(time(NULL)))/RAND_MAX )*n;
*/
srand(time(NULL));
int zufall=rand()%n;
cout<<"Zufall rand()="<<zufall<<endl;
if(zufall==0)
{
zufall=1;
return zufall;
}
else
{
return zufall;
};
return 0;
} |
wenn du sagst, dass du immer ne 1 als Zufallzahl bekommst, heisst das, dass die 1. if-Abfrage immer erfüllt ist und damit "zufall == 0" ist, da du zufall als modulo von der rand()-zahl und einer Zahl n nimmst und es sehr unwahrscheinlich ist, dass n "zufällig" immer dieselbe Zahl ist, die auch rand() erzeugt, schliesse ich daraus, dass rand() immer auch 0 liefert, da ja 0 % n immer Null liefern wird
leider kenne ich mich mit zufallszahlen nicht so aus, habe sie wenn dann nur unter Delphi verwendet, da allerdings gab es sowas wie ne Initialisierungsfunktion, die du aufrufen musstest, damit die eigentlich rand-funktion auch zufallszahlen ermittelte, sonst kam immer das raus, was du grad beschrieben hast, der grund hierfür war, dass man den Zahlenbereich einschränken konnte und die Initialisierung die Systemzeit ermittelte, kannst ja mal schauen, ob man bei rand() in C sowas auch braucht.