¿Cómo se tiran los dados en C#?

Esta aplicación utiliza una instancia de la clase Random() en el objeto rnd.  También asigna suficiente espacio para guardar los totales de las puntuaciones 3..18 en la matriz Rolls[].  Las funciones de miembro OneDice() devuelven un valor entre 1 y 6 - rnd.Next(n) devuelve valores en el rango 0..n-1, mientras que ThreeDice() llama a OneDice() tres veces.  El constructor del RollDice() borra el conjunto de Rolls y luego llama a ThreeDice() cuantas veces (10 millones en este caso) e incrementa el elemento Rolls[] apropiado.

La última parte es imprimir los totales generados para ver que genera tiros de acuerdo con las probabilidades.  Un dado de 6 caras tiene una puntuación media de 3,5, por lo que tres dados deberían tener una media de 10,5.  Los totales para 10 y 11 son aproximadamente los mismos y ocurren aproximadamente el 12.5% de las veces.

Aquí está el resultado de una ejecución típica.  No toma más de un segundo.  Como es una aplicación de consola, incluí una

 Console.ReadKey();

Esperar hasta que pulse una tecla antes de cerrar.

Salida del programa

 3 46665

4 138772

5 277440

6 463142

7 693788

8 971653

9 1157160

10 1249360

11 1249908

12 1159074

13 972273

14 695286

15 463270

16 277137

17 138633

18 46439

Listado de programas

 using System;

using System.Collections.Generic;

using System.Text;

namespace exrand

{

    public class RollDice

    {

        private Random rnd= new Random() ;

        private int[] Rolls = new int[19]; // Holds 3 to 18

        public int OneDice() {

            return rnd.Next(6)+1;

        }

        public int ThreeDice()

        {

            return OneDice() + OneDice() + OneDice() ;

        }

        public RollDice(int Count)

        {

            int i = 0;

            for (i=3;i

(0 votes)