Cum rostogolesc zarurile în C, C ++ și C #?

Această aplicație folosește funcția srand () funcție pentru semințiat generatorul de numere aleatorii. Functia Random (n) returnează un număr întreg în intervalul de la 1 la n.

Matricea de int totaluri deține numărul total pentru scorurile de la 3 la 18. Apoi bucle de 10 milioane de ori. Acest număr este definit ca o const, dar dacă compilatorul dvs. nu acceptă const, debutați în loc de #define.

Fiecare zar, d1, d2 și d3 deține Aleatoriu() rola de zar generată de zar și elementul pentru scorul de zar combinat (în intervalul 3-18) este incrementat.

Ultima parte tipărește totalul pentru a vedea că generează aruncări în conformitate cu probabilitățile. Un zar cu 6 fețe are un scor mediu de 3,5, deci trei zaruri ar trebui să medieze aproximativ 10,5. Totalurile pentru 10 și 11 sunt aproximativ aceleași și apar aproximativ 12,5% din timp.

Iată rezultatul unei rulări tipice. Nu durează mai mult de o secundă.

Rolling Ten Millions Zice

  • 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 / * Necesar doar pentru semințe srand * /
#include
#include
const tenmillion = 1000000L;
/ * #define zece miliarde 10000000L * /
void Randomize ()
timp srand ((nesemnat) (NULL));

int Aleatoriu (maxim Max)
returnare (rand ()% Max) + 1;

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

int i;
totaluri int [19];
printf ("Rolling Ten Millions Zice \ n");
Randomize ();
pentru (i = 3; i<=18;i++)
totaluri [i] = 0;
pentru (i = 0; i< tenmillion;i++)

int d1 = Aleator (6);
int d2 = Aleator (6);
int d3 = Întâmplător (6);
int total = d1 + d2 + d3;
totaluri [total] ++;

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

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

returnare 0;