So, du hast nun eine Programm-Idee die nicht ohne Zufallszahlen auskommt, weisst aber nicht wie du diese in "C" realisieren kannst. Ich werde nun versuchen, dir das mal etwas näher zu bringen. Vorab aber einige Informationen:
Der Computer kennt eigentlich keine Zufallszahlen. Irgendwoher bezieht der Computer seine Zahlen immer und abstrahiert sie dann mittels einer Formel. In "C" steht dir dafür die sog. rand - Funktion zur Verfügung. Standardmässig ist diese Funktion in der Bibliothek "math.h" zu finden. Wir könnten uns eine "Pseudo-Zufallszahlen-Funktion" auch selbst schreiben, aber wieso sollte man sich eine Funktion schreiben, wenn bereits eine ausreichende Funktion in den Bibliotheken zu finden ist?
Wie bereits erwähnt braucht diese Funktion einen Wert, aus welchem sich durch die vorher erwähnte Abstraktionsformel eine Pseudo-Zufallszahl generieren lässt. Als Startwert eignet sich dafür sehr gut zum Beispiel die System-Zeit (TIME).
Verwenden wir diese Funktion mal in einem C-Programm (Code betrifft nur die rand-Funktion):
Code :
1 2 | srand (time(NULL)); // Intialisierung der srand Funktion //
cout << rand() << endl; // Ausgabe der Zufallszahl // |
Als Ausgabe erhälst du jetzt wahrscheinlich eine sehr hohe Zahl. Schlussendlich fehlt uns ja noch ein Paramter zur Steuerung des maximalen Wertes der Zufallszahl - und genau dies wirst du wahrscheinlich sehr oft brauchen. Sei es zum Beispiel um einen Lotto-Zahlen-Generator zu schreiben - wo die höchste Zahl die 49 ist (zumindest bei uns in der Schweiz).
Erstellen wir mal eine Zufallszahl aus dem Wertebereich 1 - 49:
Code :
1 2 | srand (time(NULL));
cout << rand()%49 << endl; |
Als Ausgabe erhalten wir nun eine Zufallszahl die den Wert 49 nicht überschreiten wird. Dem Code nach bestimmen wir also mittels dem Paramter %Wert den maximalen Wert der Zufallszahl. Erweitern wir das ganze mal mittels einer for-Schleife auf 6 Zahlen:
Code :
1 2 3 4 5 6 | srand (time(NULL));
for (int x=1;x<=6;x++)
{
cout << rand()%49 << endl;
} |
Als Ausgabe erhalten wir nun 6 Zahlen, schön untereiander folgend, die allesamt den Wert 49 nicht überschreiten können.
Nun, aber unser Lotto-Zahlen-Generator hat noch einen gravierenden Fehler, der je nachdem erst nach mehrmaligem Ausführen sichtbar wird: Gleiche Zahlen können mehrfach vorkommen - was beim richtigen Lotto nicht möglich ist. Dieses Problem werde ich dann vielleicht in einem weiteren Tutorial behandeln - macht euch erstmal mit der rand-Funktion an sich bekannt.



Kommentar schreiben

Bereiche
Kategorien
Forum - Programming




Artikel bewerten