Hur rullar jag tärningar i C, C ++ och C #?

Denna applikation använder srand () funktion för att fröa slumptalsgeneratorn. Funktionen Random (n) returnerar ett heltal inom intervallet 1 till n.

Int array totaler har totalt antal för poängen 3 till 18. Den slingrar sedan 10 miljoner gånger. Detta nummer definieras som en const, men om din kompilator inte stöder const, avmarkera #definiera istället.

Varje tärning, d1, d2 och d3 har Slumpmässig() genererad tärningsrullstansrulle och elementet för den kombinerade tärningsscore (inom området 3-18) ökas.

Den sista delen skriver ut totalen för att se att den genererar kast i enlighet med sannolikheterna. En 6-sidig tärning har en genomsnittlig poäng på 3,5, så tre tärningar bör i genomsnitt vara cirka 10,5. Totalen för 10 och 11 är ungefär desamma och förekommer cirka 12,5% av tiden.

Här är utgången från en typisk körning. Det tar inte mer än en sekund.

Rulla tio miljoner tärningar

  • 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 / * Behövs bara för srandfrö * /
#inkludera
#inkludera
const tenmillion = 1000000L;
/ * # definiera tenmillion 10000000L * /
void Randomize ()
srand ((osignerad) tid (NULL));

int Slumpmässigt (int Max)
avkastning (rand ()% Max) + 1;

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

int i;
intotalen [19];
printf ("Rolling Ten Million Dice \ n");
Slumpmässigt ();
för (i = 3; i<=18;i++)
totalen [i] = 0;
för (i = 0; i< tenmillion;i++)

int d1 = slumpmässigt (6);
int d2 = slumpmässigt (6);
int d3 = slumpmässigt (6);
int totalt = d1 + d2 + d3;
totala [totalt] ++;

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

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

retur 0;