Zufällige zahlen
-
Schreibe ein Programm das zufällig zahlen ausgeben soll. Nun will ich das die Zahlen zwischen null und hundert liegen sollen. Dafür habe es so gemacht wie es auf der Seite von cplusplus.com empfohlen wurde, doch es klappt irgendwie nicht.
( value % 100 ) is in the range 0 to 99 ( value % 100 + 1 ) is in the range 1 to 100 ( value % 30 + 1985 ) is in the range 1985 to 2014http://www.cplusplus.com/reference/clibrary/cstdlib/rand/
#include "stdafx.h" #include "std_lib_facilities.h" #include <time.h> #include <stdio.h> void randint(){ rand() % 100; cout << rand() << endl; } int main() { cout << "Please enter a char to generate a number\n"; cout << "To exit enter \"!\"\n"; char c; while(cin >> c){ if ('!' == c){ break; } else randint(); } keep_window_open(); return 0; }
-
void randint(){ rand() % 100; // Berechne eine Zufallszahl aus [0,99] cout << rand() << endl; // Gib irgendeine andere Zufallszahl aus }
-
Fehlt da nicht srand(time(NULL)); ?
Sonst kommt da ja jedes mal das gleiche
-
Jetzt ist alles klar, da war der Fehler.
-
Conflict schrieb:
Fehlt da nicht srand(time(NULL)); ?
Sonst kommt da ja jedes mal das gleicheWo?
Habe es gefunden.
Das Problem ist gelöst. Danke für eure Hilfe.
-
Conflict bezieht sich hier darauf, dass zwei unabhängige Programmdurchläufe dieselbe Sequenz an Zufallszahlen produzieren würde. rand erzeugt nicht wirklich zufällige Zahlen, sondern berechnet aus der letzten Zufallszahl sozusagen die nächste. Daher sollte man dafür sorgen, dass die erste wenigstens einigermaßen zufällig ist. Mit srand gibt man diesen "Anfangswert" an und kann dafür wie Conflict es gezeigt hat, zum Beispiel die Zeit hernehmen.
-
Alles klar, jetzt Funktioniert alles und die Zahlen sind zufällig.