Hallo!
Ich möchte mit srand()/rand() mehrere Zufallszahlen generieren. Das Problem: Auch bei einer Schleife kommt immer die selbe Zahl raus. Was kann man da machen?
Danke und LG,
Heli
Zufallsgenerator
- Xin
- nur zu Besuch hier
- Beiträge: 8862
- Registriert: Fr Jul 04, 2008 11:10 pm
- Wohnort: /home/xin
- Kontaktdaten:
Re: Zufallsgenerator
Es gibt keinen Zufallsgenerator, rand() ist eine Funktion die wirr Zahlen erzeugt, aber eben nicht zufällig.tauberheli hat geschrieben:Ich möchte mit srand()/rand() mehrere Zufallszahlen generieren. Das Problem: Auch bei einer Schleife kommt immer die selbe Zahl raus. Was kann man da machen?
Mittels rand initialisierst Du diese Funktion, das bedeuetet, dass Du gewissermaßen die erste Zahl vorgibst. So kannst Du ein Programm mit Zufallsgenerator debuggen, weil Du einen Verlauf von Zufallszahlen reproduzieren kannst.
Um wirklich zufällige Zahlen zu haben, brauchst Du einen vergleichsweise zufälligen Initialisierungswert. Eine Möglichkeit ist die aktuelle Uhrzeit zu nehmen:
Code: Alles auswählen
srand( time() );
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
-
- Beiträge: 16
- Registriert: Di Apr 27, 2010 3:47 pm
Re: Zufallsgenerator
Zu unterschiedlichen Zeitpunkten bekomme ich natürlich unterschiedliche Zahlen. (Soweit weiß ich Bescheid)
Ich habe aber das Problem, dass ich mehrere zufällige Zahlen in einem Programm generieren will. (Siehe unten)
Geht das? Oder nicht?
LG
Ich habe aber das Problem, dass ich mehrere zufällige Zahlen in einem Programm generieren will. (Siehe unten)
Geht das? Oder nicht?
LG
Code: Alles auswählen
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main ()
{
int a,b;
srand ( time(NULL) );
a=rand();
srand ( time(NULL) );
b=rand();
printf ("Random number: %d\n", a);
printf ("Random number: %d\n", b);
return 0;
}
- cloidnerux
- Moderator
- Beiträge: 3125
- Registriert: Fr Sep 26, 2008 4:37 pm
- Wohnort: Ram (Gibts wirklich)
Re: Zufallsgenerator
natürlich geht das, aber du kannst dir den 2 Aufruf von srand sparen, da bei jedem aufruf von rand() die Basiszahl(das was du mit srand intialisiertst) verändert wird, und du so mit jedem aufruf von rand() eine neue zahl erhälst.Ich habe aber das Problem, dass ich mehrere zufällige Zahlen in einem Programm generieren will. (Siehe unten)
Geht das? Oder nicht?
Aber das funktioniert so nicht:
Code: Alles auswählen
a=rand();
rand() gibt nämlich nur einen Float zwischen 0 und 1 zurück.
Edit by Xin: URL korrigiert
Redundanz macht wiederholen unnötig.
quod erat expectandum
quod erat expectandum
- Xin
- nur zu Besuch hier
- Beiträge: 8862
- Registriert: Fr Jul 04, 2008 11:10 pm
- Wohnort: /home/xin
- Kontaktdaten:
Re: Zufallsgenerator
Nicht kannst - musst!cloidnerux hat geschrieben:natürlich geht das, aber du kannst dir den 2 Aufruf von srand sparenIch habe aber das Problem, dass ich mehrere zufällige Zahlen in einem Programm generieren will. (Siehe unten)
Geht das? Oder nicht?
Ein Computerprogramm braucht keine Sekunde um zur zweiten Zeile zu kommen. Wenn nicht zufällig die Sekunde in dem Moment umschlägt, wirst Du den Zufallsgenerator wieder zurücksetzen und bekommst zweimal die gleiche Zahl heraus.
srand initialisiert den Zufallsgenerator. Initialisierung macht man ganz am Anfang - einmalig. ^^
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
Re: Zufallsgenerator
Hey
Ja dein problem ist das das ganze in ein paar millisekunden von staten geht und dadurch die selbe zahl herauskommt.
Einfache lösung ne if abfrage einbauen wenn die zahlen immer noch die selben sind einfach neu generieren.
mfg
tobi
Ja dein problem ist das das ganze in ein paar millisekunden von staten geht und dadurch die selbe zahl herauskommt.
Einfache lösung ne if abfrage einbauen wenn die zahlen immer noch die selben sind einfach neu generieren.
mfg
tobi
- Xin
- nur zu Besuch hier
- Beiträge: 8862
- Registriert: Fr Jul 04, 2008 11:10 pm
- Wohnort: /home/xin
- Kontaktdaten:
Re: Zufallsgenerator
Einfachere Lösung: nur einmal initialisieren und dann rand() so oft aufrufen, wie man es braucht? ^^tobi2212 hat geschrieben:Einfache lösung ne if abfrage einbauen wenn die zahlen immer noch die selben sind einfach neu generieren.
Dann mal willkommen im Forum

Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
Re: Zufallsgenerator
Recht haste mein fehler ^^
mfg
tobi
mfg
tobi