Successfully reported this slideshow.

Algoritmo congruencial aditivo

1

Share

Loading in …3
×
1 of 23
1 of 23

More Related Content

Related Audiobooks

Free with a 14 day trial from Scribd

See all

Algoritmo congruencial aditivo

  1. 1. Escuela de Ciencias de la Computación SIMULACIÓN DE SISTEMAS Profesor: Ing. María del Carmen Cabrera <ul><li>Realizado por: </li></ul><ul><ul><li>Edwin Fabián Maza </li></ul></ul><ul><ul><li>Mayra Montalván </li></ul></ul>
  2. 2. <ul><li>ANÁLISIS Y RESULTADOS DEL ALGORITMO CONGRUENCIAL ADITIVO </li></ul>11/05/2008 SIMULACIÓN DE SISTEMAS
  3. 3. INTRODUCCION <ul><li>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…. </li></ul>11/05/2008 SIMULACIÓN DE SISTEMAS
  4. 4. OBJETIVOS <ul><li>Generar números aleatorios. </li></ul><ul><li>Determinar cuales podrían ser sus ventajas </li></ul><ul><li>Identificar variables que intervienen para le desarrollo de este algoritmo </li></ul>11/05/2008 SIMULACIÓN DE SISTEMAS
  5. 5. <ul><li>PASOS QUE INTERVIENEN EN EL ANÁLISIS Y RESULTADO QUE GENERA EL ALGORITMO </li></ul>11/05/2008 SIMULACIÓN DE SISTEMAS
  6. 6. ALGORITMO CONGRUENCIAL ADITIVO El programa inicio con una pantalla igual a esta. 11/05/2008 SIMULACIÓN DE SISTEMAS
  7. 7. ALGORITMO CONGRUENCIAL ADITIVO <ul><li>El usuario puede presionar cualquier tecla para continuar, caso contrario al presionar entre se cerrará el programa. </li></ul><ul><li>La pantalla que continúa es esta. </li></ul>11/05/2008 SIMULACIÓN DE SISTEMAS
  8. 8. ALGORITMO CONGRUENCIAL ADITIVO 11/05/2008 SIMULACIÓN DE SISTEMAS
  9. 9. ALGORITMO CONGRUENCIAL ADITIVO <ul><li>Declaramos variables que son arreglos para el conjunto de valores xi y ri </li></ul><ul><li>intSecuencia_Inicial[n_secueIniciales+N_pseudoAleat]; </li></ul><ul><li>float ri_PseudoAleatorios[N_pseudoAleat]; </li></ul><ul><li>float ri = 0; </li></ul>Para iniciar con el análisis se debe considerar algunas variables que se necesitan al inicio. 11/05/2008 SIMULACIÓN DE SISTEMAS
  10. 10. ALGORITMO CONGRUENCIAL ADITIVO <ul><li>Cuantos números aleatorios me interesa sacar. </li></ul><ul><li>printf(&quot;NUMEROS ALEATORIOS N = &quot;); </li></ul><ul><li>scanf(&quot;%d&quot;,&N_pseudoAleat); </li></ul>11/05/2008 SIMULACIÓN DE SISTEMAS
  11. 11. ALGORITMO CONGRUENCIAL ADITIVO <ul><li>Cuantos números tengo en mi secuencia de números iniciales </li></ul><ul><li>printf(&quot;SECUENCIA DE NUMEROS INICIALES n = &quot;); </li></ul><ul><li>scanf(&quot;%d&quot;,&n_secueIniciales); </li></ul>11/05/2008 SIMULACIÓN DE SISTEMAS
  12. 12. ALGORITMO CONGRUENCIAL ADITIVO <ul><li>El conjunto de números iniciales que será ingresado por el usuario. </li></ul><ul><li>printf(&quot;INGRESAR LA SECUENCIA DE NUMEROS INICIALES&quot;); </li></ul><ul><li>for(int h=0; h<n_secueIniciales;h++) </li></ul><ul><li>{ </li></ul><ul><li>printf(&quot;r[%d] = &quot;,h); </li></ul><ul><li>scanf(&quot;%d&quot;,&Secuencia_Inicial[h]); </li></ul><ul><li>} </li></ul><ul><li>Se debe considerar que este conjunto debe ser de 2 o más números. </li></ul>11/05/2008 SIMULACIÓN DE SISTEMAS
  13. 13. ALGORITMO CONGRUENCIAL ADITIVO <ul><li>El divisor que me permitirá sacar el residuo. </li></ul><ul><li>p rintf(&quot;DIVISOR m = &quot;); </li></ul><ul><li>scanf(&quot;%d&quot;,&divisor_M); </li></ul>11/05/2008 SIMULACIÓN DE SISTEMAS
  14. 14. ALGORITMO CONGRUENCIAL ADITIVO <ul><li>Al seguir todos estos pasos se tiene hasta el momento una pantalla igual a esta. </li></ul>11/05/2008 SIMULACIÓN DE SISTEMAS
  15. 15. ALGORITMO CONGRUENCIAL ADITIVO <ul><li>Una vez teniendo esta información se procede a aplicar el cálculo con la ecuación que se tiene. </li></ul><ul><li>  </li></ul><ul><li>En una variable guardaré el número total del conjunto inicial o secuencia de números iniciales </li></ul><ul><li>i = n_secueIniciales; </li></ul>11/05/2008 SIMULACIÓN DE SISTEMAS
  16. 16. ALGORITMO CONGRUENCIAL ADITIVO <ul><li>En un ciclo repetitivo realizaré el cálculo. </li></ul><ul><li>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. </li></ul><ul><li>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. </li></ul>11/05/2008 SIMULACIÓN DE SISTEMAS
  17. 17. ALGORITMO CONGRUENCIAL ADITIVO <ul><li>En este momento también calculo el valor de ri que será guardado en un arreglo con punto flotante, es decir de tipo float . </li></ul><ul><li>for(int k = 0; k < N_pseudoAleat; k++) </li></ul><ul><li>{ </li></ul><ul><li>xi = (Secuencia_Inicial[i - 1] + Secuencia_Inicial[i -n_secueIniciales]) % divisor_M; </li></ul><ul><li>ri = (float)xi/(float)(divisor_M-1); </li></ul><ul><li>ri_PseudoAleatorios[k] = ri; </li></ul><ul><li>Secuencia_Inicial[i] = xi; </li></ul><ul><li>i++; </li></ul><ul><li>} </li></ul>11/05/2008 SIMULACIÓN DE SISTEMAS
  18. 18. ALGORITMO CONGRUENCIAL ADITIVO <ul><li>Una vez recorrido hasta la cantidad de números aleatorios que me interesa sacar, se ha terminado. </li></ul><ul><li>Para mostrar los resultados es sencillo. </li></ul><ul><li>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. </li></ul>11/05/2008 SIMULACIÓN DE SISTEMAS
  19. 19. ALGORITMO CONGRUENCIAL ADITIVO <ul><li>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. </li></ul><ul><li>Por lo tanto he terminado de resolver este algoritmo. </li></ul><ul><li>  </li></ul><ul><li>int contador_ri = 0; </li></ul><ul><li>aux_i = n_secueIniciales; </li></ul><ul><li>for(int h=n_secueIniciales;h<i;h++) </li></ul><ul><li>{ </li></ul><ul><li>printf(&quot;Xi = (%d + %d) mod %d = %dri = %d/(%d - 1) = %f&quot;, </li></ul><ul><li>Secuencia_Inicial[aux_i - 1],Secuencia_Inicial[aux_i - n_secueIniciales],divisor_M, </li></ul><ul><li>Secuencia_Inicial[h],Secuencia_Inicial[h],divisor_M,ri_PseudoAleatorios[contador_ri]); </li></ul><ul><li>contador_ri++; </li></ul><ul><li>aux_i++; </li></ul><ul><li>} </li></ul>11/05/2008 SIMULACIÓN DE SISTEMAS
  20. 20. ALGORITMO CONGRUENCIAL ADITIVO <ul><li>La pantalla final de los resultados es la siguiente. </li></ul>11/05/2008 SIMULACIÓN DE SISTEMAS
  21. 21. ALGORITMO CONGRUENCIAL ADITIVO <ul><li>El programa permite volver a generar si es que el usuario lo desea. </li></ul><ul><li>printf(&quot;¨DESEA VOLVER A GE NERAR[S/N]=>> &quot;); </li></ul><ul><li>do{ </li></ul><ul><li> opc=toupper(getch()); </li></ul><ul><li>}while(opc!='S' && opc!='N'); </li></ul>11/05/2008 SIMULACIÓN DE SISTEMAS
  22. 22. ALGORITMO CONGRUENCIAL ADITIVO <ul><li>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. </li></ul><ul><li>PantallaInicio(); </li></ul>11/05/2008 SIMULACIÓN DE SISTEMAS
  23. 23. SIMULACIÓN DE SISTEMAS <ul><li>GRACIAS…………….. </li></ul>ALGORITMO CONGRUENCIAL ADITIVO 11/05/2008 SIMULACIÓN DE SISTEMAS

×