zehnseitiger Würfel vs achtseitiger Würfel
-
Hallo,
ich spiele gferade mit arrays rum und habe mal als beispiel ein Programm geschrieben, das einen achtseitigen Würfel und einen zehnseitigen Würfel je 100 mal wirft und die Ergebnisse in ein array speichert. Dann soll die Anzahl der jeweiligen Würfe por augenzahl ausgegeben werden und die totalzahl der Augen.
Dabei kommt mir der Unterschied zwischen den beiden Totalen zu krass vor, denn es sind ja pro wurf "nur" 2 Augenzahlen mehr drin, und das auch nur theoretisch.
Habe ich in meinem Code eventuell einen Denkfehler?
MfG
Matix
//1w8 vs 1w10 // Gunnar Goebel #include <iostream> #include <ctime> using namespace std; int main() { srand (time ( 0 ) ); int w8array[9] = {}; int w10array[11] = {}; int sumW8=0; int sumW10=0; for (int roll = 1; roll <=100; roll++) { w8array[ 1+rand()%8 ]++; } cout << "Hundert Wuerfe bei einem 1w8: " << endl; for ( int augen = 1; augen <=8; augen++) { cout << "Augenzahl :" << augen << " Wuerfe: " << w8array[augen] <<endl; } for (int total =1; total <=8; total++) { sumW8 += total*w8array[total]; } cout << "Schaden Total:" << sumW8 << endl; for (int roll = 1; roll <=100; roll++) { w10array[ 1+ rand()%10 ]++; } cout << "Hundert Wuerfe bei einem 1w10: " << endl; for ( int augen = 1; augen <=10; augen++) { cout << "Augenzahl :" << augen << " Wuerfe: " << w10array[augen] <<endl; } for (int total =1; total <=10; total++) { sumW10 += total*w10array[total]; } cout << "Schaden Total:" << sumW10 << endl; system("PAUSE"); return 0; }
-
zum einen solltest du dir mal nen artikel aus den FAQ zu zufälligen zahlen raussuchen. rand()%n verfälscht das ergebnis.
und dann solltest du dir nochmal gedanken über zufällige verteilungen machen
wenn man z.b. mit einem w10 n würfe gegen einen w8 macht, hat man schon eine basischance von ca. 4%, die doppelte (!) augenzahl zu erreichen.
-
ThaRealMatix schrieb:
ich spiele gferade mit arrays rum und habe mal als beispiel ein Programm geschrieben, das einen achtseitigen Würfel und einen zehnseitigen Würfel je 100 mal wirft und die Ergebnisse in ein array speichert. Dann soll die Anzahl der jeweiligen Würfe por augenzahl ausgegeben werden und die totalzahl der Augen.
Dabei kommt mir der Unterschied zwischen den beiden Totalen zu krass vor, denn es sind ja pro wurf "nur" 2 Augenzahlen mehr drin, und das auch nur theoretisch.[cpp]
Hallo Matix,
was erwartest Du? Beim 8maligen Werfen eines 8-seiten-Würfels (wie sieht der den aus?) und der Annahme, dass alle Seiten gleich oft drankommen, bekommt man als Augensumme 1+2+..+8=36 - also 4,5 pro Wurf. Beim 10-seitigen wären es 55/10=5,5 Augen pro Wurf. Bei 100 Würfen sind das im Mittel 450 bzw. 550.
Ich habe Dein Programm 3-mal hintereinander gestartet und bekomme:
w8: 431 464 443 (erwartet: 450) w10: 568 547 531 (erwartet: 550)wie sind Deine Werte?
Zudem verwendet man nicht rand()% - siehe auch die Zufallsklasse hier und dieser Beitrag über Zufallszahlen.
Gruß
Werner
-
Werner Salomon schrieb:
Beim 8maligen Werfen eines 8-seiten-Würfels (wie sieht der den aus?)
Ein w8 ist ein Oktaeder. Man nehme 4 gleichseitige Dreiecke und ein Quadrat gleicher Kantenlänge udn baue sich daraus eine Pyraide mit quadratischer Basis - zwei von denen ergeben zusammen einen 8-Flächer
