Anfängerfrage zu Zufallszahlen
-
Kann mir vielleicht jemand sagen, wo hier der Fehler ist ?
Mein Programm gibt immer die gleiche Zahl aus.
#include<iostream.h> #include<stdio.h> #include<stdlib.h> #include<time.h> void main() { int zahl; void randomize(); zahl=rand() % 1000; }
Besten Dank
-
void randomize();
Ich nehm an, das soll ein Aufruf der (in ANSI-C nicht vorhandenen) Funktion randomize sein? Es ist aber eine Deklaration dieser Funktion.
Die Funktion zum Initialisieren des Zufallsgenerators heißt srand. Damit nicht bei jedem Programmlauf dieselbe Folge von Zufallszahlen kommt, kann man ihr die aktuelle Zeit übergeben:
srand((unsigned)time(0));
(das ist m.W. nicht 100% korrekt, klappt aber auf allen Compilern, die ich kenne, da diese time_t als Anzahl der Sekunden seit 1970 darstellen)
-
for (zaehler=1;zaehler<=10;zaehler++) { int ergebnis; int ergebnis1; int zahl1; int zahl2; int op; char operat; //Variable für den Operator srand((unsigned)time(0)); zahl1=rand()%1000; system("pause"); srand((unsigned)time(0)); zahl2=rand()%1000; srand((unsigned)time(0)); op=rand()%4+1;
Vielen Dank für deine schnelle Antwort, doch jetzt stellt sich folgendes Problem ein. Bei Ausgabe der Zahl1 und Zahl2, beginnen die Zahlen z.B bei 400 und steigen ziemlich regelmäßig an, sind also nicht so wie ich es brauchen würde, komplett zufällig zwischen 0 und 100.
-
du solltest srand im ganzen Programm genau *einmal* aufrufen, nicht andauernd.
-
Ich brauche leider 10 mal zwei möglichst verschiedene Zahlen
-
Schlag bitte dein Buch / Manpage / Online-Hilfe auf und lies dir die Beschreibung der Funktionen srand und rand durch.
-
Besten Dank, ich habe srand vor die for-Schleife gesetzt und jetzt gehts.