Zufallszahl: entweder 0 oder 1
Habe ich diesen code:
srand(time(NULL));
int n = rand() % 1 + 0;
printf("%d\n", n);
Aber, wenn ich es (nichtsrand(time(NULL))
) in einer Schleife z.B., es erzeugt nur eine Folge von 0.
Es ist eine weitere Implementierung für die Zufallszahlen zwischen 0 und 1 liegt oder habe ich etwas vergessen?
- rand() % 1 ist immer 0, weil das, was rand gibt, ist immer teilbar durch 1
- durch die Art und Weise + 0 ergibt immer 0, und daher hat keine Auswirkungen hier.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie bedeutete, 0 oder 1
%
macht Sinn, aber Sie meinte% 2
(oder& 1
). Natürlich, die+ 0
ist noch eher sinnlos, keine Ahnung, was Sie sind ein Ziel für es. Für eine ganze Zahl als Ergebnis 0 oder 1, nur:Wird der compiler wahrscheinlich "Kraft-reduzieren", dass:
Stellen Sie außerdem sicher, dass Sie nur rufen
srand()
einmal in Ihr Programm oder es wird nicht die Wirkung haben, die Sie erwarten.Wenn Sie möchten, entweder 0 oder 1, nur
wenn das, was rand gibt, ist auch Sie bekommen eine 0, und wenn es seltsam ist, erhalten Sie eine 1 hier.
produzieren
0
immer alsrand() % 1
gibt0
(rand()%a
generiert eine Zahl zwischen0
zua-1
).