¿Cómo ruedo dados en C, C ++ y C #?

Esta aplicación usa el srand () función para sembrar el generador de números aleatorios. La función Aleatorio (n) devuelve un entero en el rango de 1 a n.

La matriz int totales mantiene el recuento total de los puntajes de 3 a 18. Luego realiza un bucle de 10 millones de veces. Este número se define como una constante pero si su compilador no admite constante, elimine el comentario de #define.

Cada dado, d1, d2 y d3 contiene el Aleatorio() tirada de dados generada tirada y el elemento para la puntuación de dados combinada (en el rango 3-18) se incrementa.

La última parte imprime los totales para ver que genera tiros de acuerdo con las probabilidades. Un dado de 6 lados tiene un puntaje promedio de 3.5, por lo que tres dados deben promediar aproximadamente 10.5. Los totales para 10 y 11 son aproximadamente los mismos y ocurren aproximadamente el 12.5% ​​del tiempo.

Aquí está el resultado de una ejecución típica. No toma más de un segundo.

Rolling Ten Million Dice

  • 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 / * Necesario solo para srand seed * /
#incluir
#incluir
const tenmillion = 1000000L;
/ * #definir diez millones 10000000L * /
anular Aleatorizar ()
srand ((sin signo) tiempo (NULL));

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

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

int i;
int totales [19];
printf ("Rolling Ten Million Dice \ n");
Aleatorizar ();
para (i = 3; i<=18;i++)
totales [i] = 0;
para (i = 0; i< tenmillion;i++)

int d1 = Aleatorio (6);
int d2 = Aleatorio (6);
int d3 = Aleatorio (6);
int total = d1 + d2 + d3;
totales [total] ++;

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

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

devuelve 0;