Wie benutze ich die Funktion srand () mit time.h? [Duplikat]

8

Mein Programm enthält Code, der bei jeder Ausführung eine zufällige positive Ganzzahl generieren soll. Es erzeugt Zufallszahlen, aber nur einmal. Danach, wenn ich denselben Code ausführe, gibt es mir dieselben Werte und es macht meinen Code unbrauchbar.

Ich habe mit der Funktion rand begonnen und dann die Funktion srand () mit der Header-Datei time.h verwendet es funktioniert nicht richtig.

%Vor%

Erster Aufruf (zufällig):

%Vor%

Zweiter Anruf (zufällig, aber wie vorher):

%Vor%

Später habe ich Stack Overflow-Fragen gelesen und über die srand () -Funktion gelesen und sie als

verwendet %Vor%

Erster Anruf:

%Vor%

Zweiter Aufruf:

%Vor%

Es gibt mir andere (aber keine zufälligen Werte). Ich habe Arr [i] als unsigned int definiert , und trotzdem bekomme ich negative Werte.

    
Đēēpak Shãrmã 15.05.2013, 15:31
quelle

5 Antworten

31

Sie müssen srand() einmal aufrufen, um den Startwert zu randomisieren, und dann rand() in Ihrer Schleife aufrufen:

%Vor%     
Paul R 15.05.2013, 15:35
quelle
3

Versuchen Sie randomize () vor rand () aufzurufen, um den Zufallsgenerator zu initialisieren.

(siehe: srand () - warum rufst du es nur einmal an? )

    
Ze.. 15.05.2013 15:35
quelle
1

Wenn du srand gewählt hast, ist es eine gute Idee, rand() mindestens einmal aufzurufen, bevor du es benutzt, weil es eine Art schrecklicher primitiver Pseudozufallsgenerator ist. Siehe Stapelüberlauffrage Warum wird rand ()% 7 verwendet? immer 0 zurückgeben? .

%Vor%

Falls verfügbar, wäre entweder random oder arc4rand besser.

    
Grady Player 15.05.2013 16:05
quelle
-1
%Vor%     
R.M.VIVEK Arni 19.09.2014 07:58
quelle
-2
%Vor%     
R.M.VIVEK Arni 19.09.2014 08:01
quelle

Tags und Links