Simulación-Eventos Aleatorios

Considerando un evento A que puede ocurrir con una probabilidad p=p(A).

De la teoría de probabilidad sabemos que la probabilidad uniformemente distribuida en [0:1] un valor al alzar encaja en el intervalo de longitud p dentro de [0:1] por lo que P{α < p} = p = P{A}

α es generado por el generador base, acorde a lo siguiente:

Random rand = new Random();

int n = rand.Next();
string answer = "No";

if (n % 2 == 1)
{
    answer = "Yes";
}

Grupo de eventos

Dado A1, A2 , . . . , Am cómo un grupo de eventos colectivamente exaustivos, tenemos que P{Ai} = pi donde i=1 ∑m pi = 1 dividiendo el intervalo [0;1] en intervalos de longitud pi

Para poder utilizar la propiedad, de que la probabilidad uniformemente distribuida en [0;1] de la variable aleatoria coincide con el intervalo de longitud p dentro de [0;1] y es igual a p. De manera que tenemos el algoritmo de la siguiente manera:

Resultados

Implementación

int i = 0;

int n1 = int.Parse(textBox1.Text); // Prob 1
int n2 = int.Parse(textBox2.Text); // Prob 2
int n3 = int.Parse(textBox3.Text); // Prob 3
int n4 = int.Parse(textBox4.Text); // Prob 4
int n5 = int.Parse(textBox5.Text); // Prob 5

int n = int.Parse(textBox6.Text); // number of experiments
int[] experiments = new int[5];
double[] frequency = new double[5];

experiments[0] = 0;
experiments[1] = 0;
experiments[2] = 0;
experiments[3] = 0;
experiments[4] = 0;

while(i < n)
{
    int r = rand.Next(20);

    if (n1 == r) experiments[0]++;
    else if (n2 == r) experiments[1]++;
    else if (n3 == r) experiments[2]++;
    else if (n4 == r) experiments[3]++;
    else if (n5 == r) experiments[4]++;
    i++;
}

i = 0;
foreach (var item in experiments)
{
    frequency[i] = item / 20;
}

Descargar Proyecto


Procesamiento Estadístico

Sólo los parámetros dentro de un grupo definido son probabilidades de los eventos, y se pueden compara en teoria las probabilidades dadas con las empíricas. Estas probabilidades se calculan de la siguiente manera:

Donde ni es el número de veces en que un evento Ai aparece dentro de un total N de ensayos.

En el algorítmo m es el número de eventos y max es el número de ensayos.

int i = 0;

int n1 = int.Parse(textBox1.Text); // Prob 1
int n2 = int.Parse(textBox2.Text); // Prob 2
int n3 = int.Parse(textBox3.Text); // Prob 3
int n4 = int.Parse(textBox4.Text); // Prob 4
int n5 = int.Parse(textBox5.Text); // Prob 5

int n = int.Parse(textBox6.Text); // number of experiments
int[] experiments = new int[5];
double[] frequency = new double[5];

experiments[0] = 0;
experiments[1] = 0;
experiments[2] = 0;
experiments[3] = 0;
experiments[4] = 0;

while(i < n)
{
    int r = rand.Next(20);

    if (n1 == r) experiments[0]++;
    else if (n2 == r) experiments[1]++;
    else if (n3 == r) experiments[2]++;
    else if (n4 == r) experiments[3]++;
    else if (n5 == r) experiments[4]++;
    i++;
}

i = 0;
foreach (var item in experiments)
{
    frequency[i] = item / 20;
}

Descargar Proyecto