Zufallsgenerator- Auswertung der Zahlen ?
-
Hallo,
ich bin dabei einen zufallsgenerator zu machen, welcher mir nach dem durchlauf
der schleife eine auswertung anzeigt. also wenn ich zb einen würfel erzeuge mit zahlen von 1-6 und den durchlauf 20 mal mache, danach soll mir angezeigt werden wie oft die 1,2,3 usw "gewürfelt" wurde. Würde mich über eine antwort sehr freuen.
mit freundlichen grüßen
Norrec#include <iostream> #include <time.h> using namespace std; int main() { // Int int i; int zahl; int eingabe; int anzahl; // Anzeige cout << "Zahlengenerator (A-Kurs)\n\n" << endl; cout << "Wieviele Zahlen wollt ihr generieren?" << endl; cin >> eingabe; cout << "Zahlengenerator von 0- ?" << endl; cin >> anzahl; // Der Generator srand( time(NULL) ); for(i=0; i<eingabe; i++) { zahl = (rand()%anzahl)+1; cout << zahl << endl; } // Auswertung return 0; }
-
Norrec schrieb:
ich bin dabei einen zufallsgenerator zu machen, welcher mir nach dem durchlauf
der schleife eine auswertung anzeigt. also wenn ich zb einen würfel erzeuge mit zahlen von 1-6 und den durchlauf 20 mal mache, danach soll mir angezeigt werden wie oft die 1,2,3 usw "gewürfelt" wurde. Würde mich über eine antwort sehr freuen.Das ist schön. Hast Du auch ne konkrete Frage dazu oder wolltest Du uns das nur mal mitteilen?
-
Erm klar *gG* sorry wenns nicht ersichtlich ist, hab aber kein plan wie ich die
auswertung amchen kann, das war meine frage
gruß
norrec
-
Wie wär's mit einem Array, für jede Zahl die Du würfeln kannst einen Eintrag. Den setzt Du am Anfang auf 0 und erhöhst ihn immer, wenn Du die entsprechende Zahl würfelst. Zum Abschluß läufst Du einmal durch das Array und gibst die Statistik aus.
-
Ich würde sagen
int anzahl[1000] [...] for(i=0; i<eingabe; i++) { zahl = (rand()%anzahl)+1; anzahl[zahl]++; cout << zahl << endl; } [...]
-
Ahh gut, danke;) bin irgendwie nicht drauf gekommen wie ich da überhaupt rangehen soll /blush.
gruß norrec
-
Dein Array hat den gleichen Namen wie eine andere Variable.
Du solltest die Einträge im Array wenigstens noch mit 0 initalisieren.
Warum gerade Größe 1000? Was passiert, wenn ich jetzt anzahl auf 1000 setze... dann lieber dynamisch anlegen. Das ist zu kompliziert? Dann ist genau jetzt der richtige Zeitpunkt um std::vector kennen zu lernen:#include <vector> using namespace std; vector<int> statistik(anzahl,0); // anzahl Elemente anlegen, alle mit 0 initialiseren
Zugriff geht wie gewohnt mit statistik[...] etc.
Und um's Aufräumen braucht man sich auch nicht zu kümmern.MfG Jester
-
Jester hast ja recht, war zu schnell
Ich würde einfach mit "new []" ein Array anlegen, oder halt vector nehmen. Wollte es halt nur einfach gestallten, als denkanstoß.
-
Erstmal nochmal vielen dank, bekomm das aber immernoch nicht wirklich hin trotz probieren bis jetzt.. wär sehr nett wenn ihr das mit dem vector nochmal kurz erklären könntet
gruß
norrec
-
Kennst du bereits die Arrays? Nein? Dann ist der Thread "Arrays und Pointer" in der C++-FAQ genau das richtige für dich!
Du kennst dich mit Arrays bereits aus? Dann lies dir Jesters Post nochmal durch. Es ist nämlich so, dass sich die Klasse Vektor im Prinzip genauso wie ein Array verhält, zusätzlich kann sie aber noch vieles mehr und ist unkomplizierter.
Caipi
-
So nochmal
int *irgend_ein_array=new int [anzahl]; // array mit größe anzahl anlegen for(i=0; i<anzahl; i++) // array leeren irgend_ein_array[i]=0 [...] for(i=0; i<eingabe; i++) { zahl = (rand()%anzahl)+1; irgend_ein_array[zahl]++; // vorkommen von zahl abspeichern cout << zahl << endl; } [...] for(i=0; i<anzahl; i++) // array ausgeben cout<<irgend_ein_array[i]<<" x "<<i
jetzt dürfte es keinen fehler mehr enthalten
-
doch, das enthält einen dicken Hund: delete [] irgend_ein_array; fehlt.
Und weil es so schwierig ist dadran zu denken empfehle ich vector.
-
Juhu habs nun *gG* nochmal nen ganz dickes Danke
Habs mit den Arrays nun verstanden, aber werd mir die Vectoren nun mal anschauen...
So gehts nun:#include <iostream> #include <time.h> using namespace std; int main() { // Int int i; int zahl; int eingabe; int anzahl; // Anzeige cout << "Zahlengenerator mit Auswertung - A Kurs\n\n" << endl; cout << "Wieviele Zahlen wollt ihr generieren?" << endl; cin >> eingabe; cout << "Zahlengenerator von 0 - x " << endl; cin >> anzahl; cout << "--" << endl; int *irgend_ein_array=new int [anzahl+1]; // array mit größe anzahl anlegen for(i=0; i<anzahl+1; i++) // array leeren irgend_ein_array[i]=0; // Der Generator srand( time(NULL) ); for(i=0; i<eingabe; i++) { zahl = (rand()%anzahl)+1; irgend_ein_array[zahl]++; // vorkommen von zahl abspeichern cout << zahl << endl; } // Auswertung cout << "\n\nAuswertung:\n" << endl; for(i=1; i<anzahl+1; i++) // array ausgeben cout << i << " = " << irgend_ein_array[i]<< endl; return 0; }