Hoe gooi ik dobbelstenen in C, C ++ en C #?

Deze applicatie maakt gebruik van de srand () functie om de random number generator te zaaien. De functie Random (n) retourneert een geheel getal in het bereik van 1 tot n.

De int array totalen houdt het totaal aantal punten voor de scores 3 tot 18. Het loopt dan 10 miljoen keer. Dit nummer is gedefinieerd als een const, maar als uw compiler const niet ondersteunt, annuleer dan de #define.

Elke dobbelsteen, d1, d2 en d3 bevat de Willekeurig() gegenereerde dobbelsteenworp die worp en het element voor de gecombineerde dobbelstenen score (in het bereik 3-18) wordt verhoogd.

Het laatste deel drukt de totalen af ​​om te zien dat het worpen genereert in overeenstemming met de waarschijnlijkheden. Een 6-zijdige dobbelsteen heeft een gemiddelde score van 3,5, dus drie dobbelstenen moeten gemiddeld ongeveer 10,5 zijn. De totalen voor 10 en 11 zijn ongeveer hetzelfde en komen ongeveer 12,5% van de tijd voor.

Hier is de uitvoer van een typische run. Het duurt niet langer dan een seconde.

Dobbelen met tien miljoen dobbelstenen

  • 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 / * Alleen nodig voor schandzaad * /
#include
#include
const tienmiljoen = 1000000L;
/ * #define tenmillion 10000000L * /
void Randomize ()
srand ((niet ondertekend) tijd (NULL));

int Willekeurig (int Max)
rendement (rand ()% Max) + 1;

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

int i;
int totalen [19];
printf ("Rolling Ten Million Dice \ n");
Randomiseren ();
voor (i = 3; i<=18;i++)
totalen [i] = 0;
voor (i = 0; i< tenmillion;i++)

int d1 = willekeurig (6);
int d2 = willekeurig (6);
int d3 = willekeurig (6);
int totaal = d1 + d2 + d3;
totalen [totaal] ++;

voor (i = 3; i<=18;i++)

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

terugkeer 0;