Come posso lanciare i dadi in C, C ++ e C #?

Questa applicazione utilizza il srand () funzione per seminare il generatore di numeri casuali. La funzione Random (n) restituisce un numero intero compreso tra 1 e n.

La matrice int totali contiene i conteggi totali per i punteggi da 3 a 18. Quindi passa 10 milioni di volte. Questo numero è definito come const ma se il tuo compilatore non supporta const, decommenta invece #define.

Ogni dado, d1, d2 e d3 contiene il Casuale() tiro di dado generato lancio di dado e l'elemento per il punteggio di dadi combinato (nell'intervallo 3-18) viene incrementato.

L'ultima parte stampa i totali per vedere che genera tiri in conformità con le probabilità. Un dado a 6 facce ha un punteggio medio di 3,5, quindi tre dadi dovrebbero avere una media di circa 10,5. I totali per 10 e 11 sono più o meno gli stessi e si verificano circa il 12,5% delle volte.

Ecco l'output di una corsa tipica. Non ci vuole più di un secondo.

Lancio di dieci milioni di dadi

  • 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 / * Necessario solo per i semi di srand * /
#includere
#includere
const tenmillion = 1000000L;
/ * #define tenmillion 10000000L * /
void Randomize ()
srand ((unsigned) time (NULL));

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

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

int i;
totali int [19];
printf ("Lancio di dieci milioni di dadi \ n");
Rendi casuale() ;
per (i = 3; i<=18;i++)
totali [i] = 0;
per (i = 0; i< tenmillion;i++)

int d1 = Casuale (6);
int d2 = Casuale (6);
int d3 = Casuale (6);
int total = d1 + d2 + d3;
totali [totale] ++;

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

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

ritorna 0;