algoritmo congruencial aditivo

23
Escuela de Ciencias de Escuela de Ciencias de la Computación la Computación SIMULACIÓN DE SISTEMAS Profesor: Ing. María del Carmen Cabrera Realizado por: o Edwin Fabián Maza o Mayra Montalván

Upload: ewing-ma

Post on 29-Jun-2015

6.860 views

Category:

Documents


0 download

DESCRIPTION

Analisis del algoritmo congruencial aditivo

TRANSCRIPT

Page 1: Algoritmo congruencial aditivo

Escuela de Ciencias de la Escuela de Ciencias de la ComputaciónComputación

SIMULACIÓN DE SISTEMAS

Profesor: Ing. María del Carmen CabreraRealizado por:

o Edwin Fabián Mazao Mayra Montalván

Page 2: Algoritmo congruencial aditivo

ANÁLISIS Y RESULTADOS DEL

ALGORITMO CONGRUENCIAL

ADITIVO

11/05/2008 2SIMULACIÓN DE SISTEMAS

Page 3: Algoritmo congruencial aditivo

INTRODUCCIONINTRODUCCION

Este algoritmo requiere una secuencia previa de n números enteros x1, x2….xn, para generar una nueva secuencia de números enteros que empieza en xn+1….

11/05/2008 3SIMULACIÓN DE SISTEMAS

Page 4: Algoritmo congruencial aditivo

OBJETIVOSOBJETIVOS

Generar números aleatorios.Determinar cuales podrían ser sus

ventajasIdentificar variables que intervienen para

le desarrollo de este algoritmo

11/05/2008 4SIMULACIÓN DE SISTEMAS

Page 5: Algoritmo congruencial aditivo

PASOS QUE INTERVIENEN

EN EL ANÁLISIS Y

RESULTADO QUE GENERA EL

ALGORITMO

11/05/2008 5SIMULACIÓN DE SISTEMAS

Page 6: Algoritmo congruencial aditivo

ALGORITMO CONGRUENCIAL ALGORITMO CONGRUENCIAL ADITIVOADITIVO

El programa inicio con una pantalla igual a esta.

11/05/2008 6SIMULACIÓN DE SISTEMAS

Page 7: Algoritmo congruencial aditivo

ALGORITMO CONGRUENCIAL ALGORITMO CONGRUENCIAL ADITIVOADITIVO

El usuario puede presionar cualquier tecla para continuar, caso contrario al presionar entre se cerrará el programa.

La pantalla que continúa es esta.

11/05/2008 7SIMULACIÓN DE SISTEMAS

Page 8: Algoritmo congruencial aditivo

ALGORITMO CONGRUENCIAL ALGORITMO CONGRUENCIAL ADITIVOADITIVO

11/05/2008 8SIMULACIÓN DE SISTEMAS

Page 9: Algoritmo congruencial aditivo

ALGORITMO CONGRUENCIAL ALGORITMO CONGRUENCIAL ADITIVOADITIVO

1. Declaramos variables que son arreglos para el conjunto de valores xi y ri

intSecuencia_Inicial[n_secueIniciales+N_pseudoAleat];

float ri_PseudoAleatorios[N_pseudoAleat];float ri = 0;

Para iniciar con el análisis se debe considerar algunas variables que se necesitan al inicio.

11/05/2008 9SIMULACIÓN DE SISTEMAS

Page 10: Algoritmo congruencial aditivo

ALGORITMO CONGRUENCIAL ALGORITMO CONGRUENCIAL ADITIVOADITIVO

2. Cuantos números aleatorios me interesa sacar.

printf("NUMEROS ALEATORIOS N = ");scanf("%d",&N_pseudoAleat);

11/05/2008 10SIMULACIÓN DE SISTEMAS

Page 11: Algoritmo congruencial aditivo

ALGORITMO CONGRUENCIAL ALGORITMO CONGRUENCIAL ADITIVOADITIVO

3. Cuantos números tengo en mi secuencia de números iniciales

printf("SECUENCIA DE NUMEROS INICIALES n = ");

scanf("%d",&n_secueIniciales);

11/05/2008 11SIMULACIÓN DE SISTEMAS

Page 12: Algoritmo congruencial aditivo

ALGORITMO CONGRUENCIAL ALGORITMO CONGRUENCIAL ADITIVOADITIVO

4. El conjunto de números iniciales que será ingresado por el usuario.

printf("INGRESAR LA SECUENCIA DE NUMEROS INICIALES\n");

for(int h=0; h<n_secueIniciales;h++){ printf("\tr[%d] = ",h); scanf("%d",&Secuencia_Inicial[h]);}Se debe considerar que este conjunto debe ser de 2 o más

números.

11/05/2008 12SIMULACIÓN DE SISTEMAS

Page 13: Algoritmo congruencial aditivo

ALGORITMO CONGRUENCIAL ALGORITMO CONGRUENCIAL ADITIVOADITIVO

5. El divisor que me permitirá sacar el residuo.

printf("DIVISOR m = ");scanf("%d",&divisor_M);

11/05/2008 13SIMULACIÓN DE SISTEMAS

Page 14: Algoritmo congruencial aditivo

ALGORITMO CONGRUENCIAL ALGORITMO CONGRUENCIAL ADITIVOADITIVO

Al seguir todos estos pasos se tiene hasta el momento una pantalla igual a esta.

11/05/2008 14SIMULACIÓN DE SISTEMAS

Page 15: Algoritmo congruencial aditivo

ALGORITMO CONGRUENCIAL ALGORITMO CONGRUENCIAL ADITIVOADITIVO

Una vez teniendo esta información se procede a aplicar el cálculo con la ecuación que se tiene.

 En una variable guardaré el número total

del conjunto inicial o secuencia de números iniciales

i = n_secueIniciales;

11/05/2008 15SIMULACIÓN DE SISTEMAS

Page 16: Algoritmo congruencial aditivo

ALGORITMO CONGRUENCIAL ALGORITMO CONGRUENCIAL ADITIVOADITIVO

En un ciclo repetitivo realizaré el cálculo.

Como tengo el conjunto inicial de números en un arreglo, podré recorrerlo y accediendo a los valores como la ecuación lo indica, únicamente manipulando la posición o índice del arreglo.

Una vez calculado el primer valor lo procedo a guardar en el mismo arreglo pero que estará a continuación de los que existen al inicio.

11/05/2008 16SIMULACIÓN DE SISTEMAS

Page 17: Algoritmo congruencial aditivo

ALGORITMO CONGRUENCIAL ALGORITMO CONGRUENCIAL ADITIVOADITIVO

En este momento también calculo el valor de ri que será guardado en un arreglo con punto flotante, es decir de tipo float.

for(int k = 0; k < N_pseudoAleat; k++) { xi = (Secuencia_Inicial[i - 1] + Secuencia_Inicial[i

-n_secueIniciales]) % divisor_M; ri = (float)xi/(float)(divisor_M-1); ri_PseudoAleatorios[k] = ri; Secuencia_Inicial[i] = xi; i++; }

11/05/2008 17SIMULACIÓN DE SISTEMAS

Page 18: Algoritmo congruencial aditivo

ALGORITMO CONGRUENCIAL ALGORITMO CONGRUENCIAL ADITIVOADITIVO

Una vez recorrido hasta la cantidad de números aleatorios que me interesa sacar, se ha terminado.

Para mostrar los resultados es sencillo.

Como tengo dos arreglos en uno que se encuentran los valores xi y el otro que se encuentran los valores ri, únicamente con un ciclo repetitivo procedo a recorrer y mostrarlos en pantalla.

11/05/2008 18SIMULACIÓN DE SISTEMAS

Page 19: Algoritmo congruencial aditivo

ALGORITMO CONGRUENCIAL ALGORITMO CONGRUENCIAL ADITIVOADITIVO

Se debe tomar en cuenta que el arreglo xi comenzare desde la ultima posición de los números iniciales, mientras que el arreglo ri si puedo comenzar desde el inicio.

Por lo tanto he terminado de resolver este algoritmo.  int contador_ri = 0; aux_i = n_secueIniciales; for(int h=n_secueIniciales;h<i;h++) { printf("\tXi = (%d + %d) mod %d = %d\t\tri = %d/(%d - 1) = %f\n", Secuencia_Inicial[aux_i - 1],Secuencia_Inicial[aux_i -

n_secueIniciales],divisor_M,

Secuencia_Inicial[h],Secuencia_Inicial[h],divisor_M,ri_PseudoAleatorios[contador_ri]);

contador_ri++; aux_i++; }

11/05/2008 19SIMULACIÓN DE SISTEMAS

Page 20: Algoritmo congruencial aditivo

ALGORITMO CONGRUENCIAL ALGORITMO CONGRUENCIAL ADITIVOADITIVO

La pantalla final de los resultados es la siguiente.

11/05/2008 20SIMULACIÓN DE SISTEMAS

Page 21: Algoritmo congruencial aditivo

ALGORITMO CONGRUENCIAL ALGORITMO CONGRUENCIAL ADITIVOADITIVO

El programa permite volver a generar si es que el usuario lo desea.

printf("¨DESEA VOLVER A GENERAR[S/N]=>> ");do{

opc=toupper(getch());}while(opc!='S' && opc!='N');

11/05/2008 21SIMULACIÓN DE SISTEMAS

Page 22: Algoritmo congruencial aditivo

ALGORITMO CONGRUENCIAL ALGORITMO CONGRUENCIAL ADITIVOADITIVO

Una vez que el usuario determine que ya no desea generar mas números aleatorios se mostrará la pantalla inicial y se cierra el programa.

PantallaInicio();

11/05/2008 22SIMULACIÓN DE SISTEMAS

Page 23: Algoritmo congruencial aditivo

SIMULACIÓN DE SISTEMASSIMULACIÓN DE SISTEMAS

GRACIAS……………..

ALGORITMO CONGRUENCIAL ADITIVO

11/05/2008 23SIMULACIÓN DE SISTEMAS