Problem in C++(srand Funktion)

Hi Community;

Ich bin neu hier und hab schon mein erstes Problem mitgebracht!

Ich bin gerade dabei C++ zu erlernen, ich hab nun ein Programm geschrieben das eine Zufallszahl mithilfe der srand funktion ausführen sollte wo man dann diese eraten muss nur leider kommt immer die selbe Zahl wenn ich das Programm öffne!

Hab hier ma denn Code aufgelistet! Bitte um Hilfe!

Code:
#include <iostream>
#include <conio.h>
#include <stdlib.h>
using namespace std;

int main()
{
int RateZahl;
int SuchZahl;
int c;
srand(4);
SuchZahl = rand() % 1000 + 1;
do
{
cout << "Geben Sie eine Zahl zwischen 1 und 1000 ein:" << endl;
cin >> RateZahl;
if (RateZahl < SuchZahl)
{
cout << "Diese Zahl ist zu klein!" << endl;
}
if (RateZahl > SuchZahl)
{
cout << "Diese Zahl ist zu groß!" << endl;
}
}
while (RateZahl != SuchZahl);
cout << "Richtig!" << endl;
c =getch();
}
 
Ähm, wenn Du srand immer mit derselben Zahl initialisierst, so wird die "Zufallszahlenfolge" auch immer dieselbe sein. Probiere es mal mit
srand( time(NULL) );
 
Allerdings gibt es ein Problem, wenn die Zufallszahlen innerhalb so kurzer Zeit generiert werden, dass time(null) zweimal die selbe Zahl zurückgibt.

Hatten in der Schule mal das selbe Problem in C. Da machte ein Freund von mir es nicht mit time() sondern mit irgendeiner Angabe über Prozessortakte (oder so ähnlich). Diese Zahl ändert sich eben so schnell, dass sogar binnen kürzester Zeit eine neue Zufallszahl gibt.

Kann mir jemand sagen, wie das in C geht (bzw. mit welcher Funktion)?

Liebe Grüße
Woosh
 
Prozessortackt Abfragen kann man mit RDTSC (inline asm). Schöner ist es, srand nur beim Programmstart auszuführen und nicht in der Schleife ;). Das sollte dann für eine relativ lange Pseudozufallsfolge reichen (demnach wären es ca 20000)
 
Zurück
Oben