Zufallszahl: entweder 0 oder 1

7

Ich habe diesen Code:

%Vor%

Aber wenn ich es (z. B. srand(time(NULL)) ) in eine Schleife setze, erzeugt es nur eine Folge von 0. Es gibt eine andere Implementierung für die Zufallszahlen zwischen 0 und 1 oder ich habe etwas vergessen?

    
g_rmz 05.02.2014, 14:15
quelle

4 Antworten

17

Wenn du 0 oder 1 meinst, macht dein % Sinn, aber du meinst % 2 (oder & 1 ). Natürlich ist das + 0 immer noch ziemlich sinnlos, keine Ahnung was du da anstrebst. Für ein ganzzahliges Ergebnis von 0 oder 1 tun Sie einfach:

%Vor%

Der Compiler wird wahrscheinlich "Stärke reduzieren" , um zu:

%Vor%

Stellen Sie außerdem sicher, dass Sie in Ihrem Programm nur srand() einmal aufrufen oder es wird nicht den erwarteten Effekt haben.

    
unwind 05.02.2014, 14:17
quelle
9

Wenn Sie entweder 0 oder 1 wollen, tun Sie einfach

%Vor%

Wenn der Rand zurückkommt, erhältst du sogar eine 0, und wenn es ungerade ist, bekommst du hier eine 1.

    
Hayri Uğur Koltuk 05.02.2014 14:21
quelle
1
%Vor%

erzeugt 0 immer als rand() % 1 gibt 0 ( rand()%a generiert die Nummer zwischen 0 bis a-1 ).

    
haccks 05.02.2014 14:16
quelle
0
%Vor%     
Phi Nguyen 02.12.2017 06:09
quelle

Tags und Links