C: Random Number in Schleife?

1 Antwort

Lies mal was hier im Kommentar steht. Ich denke mal englisch kannst du, oder? :

srand(time(NULL));  // Initialization, should only be called once.

Falls du kein Englisch kannst: Da steht:

Initialisierung [des Zufallsgenerators]. Sollte nur einmal gemacht werden.

Aber was machst du? Du rufst das in jedem Schleifendurchlauf erneut auf.

Folglich kriegst du dann immer die selbe Zufallszahl.

Pack die Zeile vor die Schleife, dann gehts.

Woher ich das weiß:Hobby – Programmieren ist mein Hobby & Beruf
derreale87888 
Fragesteller
 04.10.2020, 21:10

ich kann english xd... aber das vor die schleife packen darauf kam ich nicht danke cheers

0
MrAmazing2  04.10.2020, 21:13
@derreale87888

Biddö. xD

Du kriegst immer die selbe Zufallszahl, denn Zufallsgeneratoren funktionieren so: Du gibst dem Generator eine Zahl, und anhand dieser Zahl generiert er eine Folge an "zufälligen" Zahlen. Wenn du ihm also die selbe Zahl gibst, dann generiert er die selbe Folge.

Zum Beispiel gibst du dem Generator die Zahl 10, und er generiert dann, nacheinander, die Zahlen 5,1,29, 17, ... Bei jedem rand() wird die nächste dieser Zahlen ausgegeben.

Wenn du dem Generator also immer wieder neu mit der Zahl 10 initialisierst, und dann einmal Rand aufrufst, dann wird er dir immer wieder die Zahl 5 ausgeben.

1
MrAmazing2  04.10.2020, 21:15
@derreale87888

Und kleine Ergänzung noch:

time(null) ist die aktuelle Zeit in Sekunden. (Als Zahl).

Da dein PC die ganzen Befehle aber in ein paar Nanosekunden schafft vergeht da keine Sekunde, somit ist die Zahl die time(null) ergibt jedesmal gleich, somit initialisierst du den Zufallsgenerator immer wieder neu mit der selben Zahl, und somit kriegst du immer wieder die selbe Zufallszahl raus.

0