Wie würfele ich in C, C ++ und C #?

Diese Anwendung verwendet die srand () Funktion, um den Zufallszahlengenerator zu setzen. Die Funktion Zufall (n) Gibt eine ganze Zahl im Bereich von 1 bis n zurück.

Das Int-Array Summen Hält die Gesamtanzahl der Punkte 3 bis 18 fest. Anschließend wird eine 10-Millionen-Schleife ausgeführt. Diese Zahl ist als Konstante definiert. Wenn Ihr Compiler keine Konstante unterstützt, entfernen Sie stattdessen das Kommentarzeichen #define.

Jeder Würfel d1, d2 und d3 enthält den Zufällig() Würfelwurf Würfelwurf und das Element für den kombinierten Würfelwert (im Bereich 3-18) wird inkrementiert.

Der letzte Teil druckt die Gesamtsummen aus, um zu sehen, dass er gemäß den Wahrscheinlichkeiten Würfe erzeugt. Ein 6-seitiger Würfel hat eine durchschnittliche Punktzahl von 3,5, drei Würfel sollten also durchschnittlich etwa 10,5 sein. Die Summen für 10 und 11 sind ungefähr gleich und treten in etwa 12,5% der Fälle auf.

Hier ist die Ausgabe eines typischen Laufs. Es dauert nicht länger als eine Sekunde.

Wirf zehn Millionen Würfel

  • 3 46130
  • 4 138608
  • 5 277278
  • 6 462607
  • 7 695381
  • 8 972020
  • 9 1158347
  • 10 1253671
  • 11 1249267
  • 12 1156480
  • 13 972005
  • 14 692874
  • 15 462452
  • 16 277575
  • 17 139142
  • 18 46163
 // dicerolls.c:
#include / * Wird nur für Sandsamen benötigt * /
#umfassen
#umfassen
const tenmillion = 1000000L;
/ * #define Tenmillion 10000000L * /
nichtig Randomize ()
srand ((vorzeichenlose) Zeit (NULL));

int Zufall (int Max)
return (rand ()% Max) + 1;

int main (int argc, char * argv [])

int i;
Gesamtzahl [19];
printf ("Würfeln mit zehn Millionen Würfeln \ n");
Randomize ();
für (i = 3; i<=18;i++)
Summen [i] = 0;
für (i = 0; i< tenmillion;i++)

int d1 = zufällig (6);
int d2 = zufällig (6);
int d3 = zufällig (6);
int total = d1 + d2 + d3;
totals [total] ++;

für (i = 3; i<=18;i++)

printf ("% i% i \ n \ r", i, summiert [i]);

return 0;