rand funktion
-
Hallo, ich habe folgende AUfgabe:
Implementieren Sie auf der Basis der Funktion rand() eine Würfel-Simulation,
die Zahlen zwischen 1 und 6 erzeugt. Zählen Sie in einem Feld entsprechender
Größe, wie oft jede Zahl bei 10000 Würfen vorkommt.Mein Code sieht so aus:
#include <stdio.h> #include <stdlib.h> int main(void) { int zufallszahl, i; for(i = 0; i < 5; i++){ printf("Die Zufallszahl lautet %d\n", zufallszahl = (rand() % 6 + 1)); } return EXIT_SUCCESS; }
Mein Code gibt zahlen zwichen 1 und 6, momentan nur 5 mal. ABer das ist schnell gemacht. DIe Frage ist nur wie kann ich ausgeben wie oft jede Zahl drankommt ?
Wäre für jede Hilfe dankbarViele Grüße
-
Würde das helfen?
int anzahl[6]={}; for(...{ int wurf=rand()%6+1; switch(wurf){ case 1: ++anzahl[1]; break; case 2: ++anzahl[2]; break; case 3: ++anzahl[3]; break; case 4: ++anzahl[4]; break; case 5: ++anzahl[5]; break; case 6: ++anzahl[6]; break; } }
Angeblich braucht man den switch gar nicht.
-
volkard schrieb:
Angeblich braucht man den switch gar nicht.
Angeblich braucht man das siebte Element von
anzahl
auch nicht.
-
Wo initialisierst du rand() ?
MfG f.-th.
-
int anzahl[6] = {0}; for (.. ++anzahl[wurf - 1];
@volkard schrieb: [ anzahl[6] ]
Ich bin enttäuscht, hast du geschlafwandelt?
-
cooky451 schrieb:
@volkard schrieb: [ anzahl[6] ]
Ich bin enttäuscht, hast du geschlafwandelt?6 ist ja eigentlich ok. Der Fehler wäre mir in echtem Code nie passiert. Bei
case 1:
hat mir der linke Zeigefinger weh getan und gerufen "Da muß eine 0 hin". Normalerweise höre ich auf sowas.
-
Danke volkard, habe es so ubernommen. Mein Code sieht jetzt so aus,
#include <stdio.h> #include <stdlib.h> int main(void) { int i; int anzahl[6]={}; int wurf; for(i = 0; i < 5; i++){ wurf = (rand() % 6 + 1); printf("Die Zufallszahl lautet %d\n", wurf ); switch(wurf){ case 1: ++anzahl[1]; break; case 2: ++anzahl[2]; break; case 3: ++anzahl[3]; break; case 4: ++anzahl[4]; break; case 5: ++anzahl[5]; break; case 6: ++anzahl[6]; break; } } printf("eins %d\n", anzahl[1]); printf("zwei %d\n", anzahl[2]); printf("drei %d\n", anzahl[3]); printf("vier %d\n", anzahl[4]); printf("fünf %d\n", anzahl[5]); printf("sechs %d\n", anzahl[6]); return EXIT_SUCCESS; }
Aber bei der anzahl[6] gibt das programm 7 mal aus, was nicht der fall ist. Alle anderen werde werden richtig ausgegben ? Wisst ihr vllt woran das liegen könnte ?
-
Ich dachte eigentlich, Volkard wollte dir nur den Ansatz geben, damit du über den Code auch nachdenkst.
Arrays haben einen Index von 0 bis n-1, wobei n die Größe ist. Jetzt kannst du dir mal Gedanken darüber machen, wie man also jeweils die Zufallszahlen in den Bereich [0..5] bekommt und das switch-Konstrukt somit überflüssig macht.
-
Danke schön habe es gelöst
war nur eine kleinigkeit.
-
Sekte schrieb:
Danke schön habe es gelöst
war nur eine kleinigkeit.
Sei dir nicht so sicher. Der obige Code ist erstens absichtlich umständlich und enthält zweitens noch unabsichtlich einen dicken Fehler. Wenn du das jetzt als Kleinigkeit bezeichnest, dann hast du die wahren Probleme vermutlich nicht erkannt.