• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Mehrere Zufallszahlen [C++]

Status
Für weitere Antworten geschlossen.
C

Cryspy

Guest
Ich hab da ein kleines Problem(chen).

Code:
#include<iostream>
#include<ctime>
 
using namespace std;
int main(void)
{
for(int i=0;i<5;i++)
{
srand(time(NULL));
int zahl = rand() % 10;
 
cout <<zahl;
}
}

Der Syntax müsste stimmen, aber ich bekomme immer die gleiche Zahl, ich möchte aber verschiedene. Was kann ih da tun?
 
Werbung:
Also ich weiß ncith wie es geht, habe eine vermutung: Der nimmt keine Zufallszahl sondern eine Zahl, die seit dem Start des Programmes ermittelt wird. Du müsstest warscheinlich am Anfang des Programmes erst den Zufallsgenerator starten. Weiß jetzt ncith wie es in C++ ist. In QBasic muss ich immer erst "RANDOMIZE TIMER" schreiben. Dann kann ich erst zufallszahlen ermitteln.

Gruß Corvulus
 
Ich hab da ein kleines Problem(chen).

Naja .. ein Problemchen hast Du nicht ..... nur ein Verständigungsproblem.

time( NULL) gibt die Zeit ab dem 1. Januar 1970 0:00 Uhr GMT in Sekunden zurück.
Wenn Du jetzt 5 Mal (for-Schleife) jeweils mit srand( time( NULL)) den Zufallsgenerator initialisierst, ist die Wahrscheinlichkeit, dass time( NULL) immer denselben Wert rausgibt (es war ein Wert, der auf Sekunden basiert), sehr sehr hoch .... ich tippe bei einen Schleifendurchlauf >> 10000 Runden kann man dann schon ein Wechsel sehen.

Auf Grund dessen, dass Du nach der Initialisierung des Zufallgenerators gleich einen Zufallswert abfragst, sollte natürlich bei sich nicht ändernden Initialisierungswerten für den Zufallsgenerator auch dieselbe Zahl aus der Zufallszahlermittlung heraus kommen.

D.h. jetzt?

Naja .... Die Initialisierung des Zufallgenerators sollte vor die Schleife gesetzt und vielleicht auch mit einen anderen Startwert besetzt werden.

Code:
#include<iostream>
#include<ctime>
 
using namespace std;

int main(void)
{
    srand(time(NULL));
    for(int i=0;i<5;i++)
    {

        int zahl = rand() % 10;
 
        cout <<zahl;
    }
}

Gruß,
Jumper, the II.

/EDIT: Natürlich 1970 und nicht 1979 .... die Null liegt mal ganz nahe bei der Neun :-/
 
Zuletzt bearbeitet:
Werbung:
Ups nicht 1979 sondern 1970 ..... es ist die offizielle Geburtszeit der Zeit für Unix-Systeme ..... für genaueres bitte google bemühen

Gruß,
Jumper, the II.
 
Werbung:
Status
Für weitere Antworten geschlossen.
Zurück
Oben