Académique Documents
Professionnel Documents
Culture Documents
Objetivo general.............................................................................................. 4
Marco teórico...................................................................................................... 4
Desarrollo .................................................................................................... 7
Ejemplo ....................................................................................................... 8
Test de Kolmogorov–Smirnov......................................................................... 9
Desarrollo .................................................................................................. 10
Implementación ................................................................................................ 11
Recomendaciones............................................................................................ 14
Conclusiones .................................................................................................... 15
Bibliografía ....................................................................................................... 16
2
INTRODUCCIÓN
El presente documento abarca el tema de la generación de números aleatorios
el cual es fundamental en la catedra de simulación de sistemas y teoría de colas,
cabe recalcar que para la simulación se requiere números seudoaleatorios en un
intervalo de (0, 1) es decir, una secuencia o sucesión de números que contenga
n números, todos ellos diferentes, n recibe el nombre del periodo o ciclo de vida
del generador que creó la secuencia.
3
Objetivo general
Objetivos específicos
MARCO TEÓRICO
A continuación, se detalla los conceptos necesarios que serán fundamentales al
momento de realizar el diseño y la implementación de la aplicación.
4
• Generar valores a alta velocidad
Métodos Congruenciales
𝑒𝑛 𝑑𝑜𝑛𝑑𝑒
𝑎, 𝑒𝑠 𝑚𝑢𝑙𝑡𝑖𝑝𝑙𝑖𝑐𝑎𝑑𝑜𝑟 (0 ≤ 𝑎 < 𝑚)
𝑚, 𝑒𝑙 𝑚𝑜𝑑𝑢𝑙𝑜 (𝑚 > 0)
𝑐, 𝑒𝑙 𝑖𝑛𝑐𝑟𝑒𝑚𝑒𝑛𝑡𝑜 (0 ≤ 𝑐 < 𝑚)
𝑋0 , 𝑙𝑎 𝑠𝑒𝑚𝑖𝑙𝑙𝑎 (0 < 𝑋0 < 𝑚)
X 0, a y m, los cuales deben ser enteros y mayores que cero. Para transformar
los números X i en el intervalo (0, 1) se usa la ecuación:
𝑋𝑖
𝑟𝑖 = ; con 𝑖 = 0,1, 2, 3, . . . , 𝑛
𝑚−1
De acuerdo con Banks, Carson, Nelson y Nicol, las condiciones que deben
cumplir los parámetros para que el algoritmo congruencial multiplicativo alcance
su máximo período son: m debe ser múltiplo de 2g, donde g debe ser entero, a=
5
3+8k, donde k = 0,1, 2, 3,…, X 0 debe ser un número impar. (Salmerón Cerdán
& Morales Giraldo, 2001)
Es evidente que es necesario que m sea grande con el fin de un periodo largo
y una alta densidad en el intervalo [0,1]. Sin embargo, la operación de dividir
por m y calcular el resto es relativamente lenta. Una elección de m adecuada
computacionalmente es m = 2k, donde k-bits es el tamaño de palabra (unidad
básica de trabajo) del microprocesador. El hecho de que esta elección sea
ventajosa reside en que nos podemos aprovechar del desbordamiento de
datos (integer overflow) para no tener que realizar la operación del generador
explícitamente. La cuestión es que si tenemos una máquina de k-bits,
entonces el mayor entero que puede ser representado es 2 k − 1 y en cualquier
intento de representar un entero mayor H, que ocuparía h > k dígitos binarios,
se perderían los h − k dígitos binarios más a la izquierda, y los k dígitos que
quedan se corresponden precisamente con H mod 2k.
Comprobación de aleatoriedad
6
son las que vamos a implementar al final en nuestra aplicación y deben
contrastar tanto la uniformidad como la independencia de los datos, además en
todos los casos utilizaremos pruebas bilaterales, en el sentido en que
rechazaremos la hipótesis de aleatoriedad tanto si los datos se alejan
notoriamente de la aleatoriedad y en cuanto a la uniformidad e independencia,
como se acercan demasiado a ella.
Test de Corridas
HHHHDDDHHHHHHHDDHHDDDD
Usando el subrayado para combinar las letras que constituye las corridas,
encontramos que primero hay una corrida de cuatro H´s, luego una corrida de
tres D´s luego una corrida de siete H´s después una corrida de dos D´s, después
de dos H´s y por último una corrida de cuatro D´s.
Desarrollo
El método llamado prueba de corridas arriba y debajo de la media consiste en lo
siguiente:
7
ser mayor o igual a 0.5 (en el caso de los ceros) o ser menor a 0.5 (en el caso
de los unos)
Valor esperado:
2𝑛0 𝑛1 1
𝜇𝑐0 = +
𝑁 2
Varianza del número de corridas:
2𝑛0 𝑛1 (2𝑛0 𝑛1 − 𝑁)
𝜎 2 𝑐0 =
𝑁 2 (𝑁 − 1)
El estadístico:
𝐶0 − 𝜇𝑐0
𝑧𝑜𝑏𝑠 =
𝜎𝑐0
Ejemplo
Determinar si la secuencia de 40 números es tal que la hipótesis de
independencia pueda ser rechazada donde α = 0.05
8
41, 68, 89, 94, 74, 91, 55, 62, 36, 27 19, 72, 75, 9, 54, 2, 1, 36, 16, 28 18, 1, 95,
69, 18, 47, 23, 32, 82, 53 31, 42, 73, 4, 83, 45, 13, 57,63, 29
1000000011
1001011111
1100111100
1101011001
2𝑛0 𝑛1 1 2(18)(22)
𝜇𝑐0 = + = + 0.5 = 20.3
𝑁 2 40
2𝑛0 𝑛1 (2𝑛0 𝑛1 − 𝑁) 2(18)(22)[2(18)(22) − 40]
𝜎 2 𝑐0 = = = 9.5446
𝑁 2 (𝑁 − 1) 402 (40 − 1)
𝐶0 − 𝜇𝑐0 17 − 20.3
𝑧𝑜𝑏𝑠 = = = −0.345
𝜎𝑐0 9.544
ya que 𝑧0.025 = 1.96, la hipótesis de independencia no puede ser rechazada
sobre la base de esta prueba
Test de Kolmogorov–Smirnov
9
La aplicación de esta prueba al caso de números seudoaleatorios uniformes,
puede ser descrita en los siguientes pasos:
Desarrollo
- Generar una muestra de números aleatorios uniformes de tamaño N.
- Ordenar dichos números en orden ascendente.
- Calcular la distribución acumulada de los números generados con la
siguiente
expresión
𝑖
𝐹𝑛 (𝑥) =
𝑛
𝐷𝑛 = 𝑚á𝑥 | 𝐹𝑛 (𝑋𝑖) – 𝑋𝑖 |
Para toda 𝑋𝑖
10
IMPLEMENTACIÓN
Para simular los algoritmos expuesto anteriormente, procedemos a generar
números seudoaleatorios a través del método congruencial multiplicativo.
Tenemos las opciones de ingresar la semilla por teclado o también por la
frecuencia del reloj como se presenta a continuación.
Una vez hemos llenado los campos, damos clic en el botón “Generar” y
dependiendo de la cantidad de números que deseamos generar, se desplegara
11
una tabla en la parte superior derecha con dichos números, además se habilitara
el botón “Test K-S” para realizar la prueba de Kolmogorov-Smirnov requerida.
12
Una vez pasado la prueba de Kolmogorov-Smirnov se habilitará la prueba de
corridas o Run Test
13
Para finalizar si la sucesión de números seudoaleatorios paso con éxito se
desplegara el mensaje “La sucesión generada es Aleatoria” caso contrario se
desplegará el siguiente mensaje.
RECOMENDACIONES
Se recomienda dejar los valores que vienen por defecto en cada variable ya que
con estos valores el periodo es más grande, en cada campo que tenemos que
ingresar los valores deben ser números enteros.
Se debe poner énfasis en buscar una semilla que nos genere una sucesión
uniforme e independiente para comprobar la validez de la ambas pruebas y tener
éxito en dichas pruebas.
Se debe de realizar varias pruebas del sistema hasta verificar que no haya
ninguna caída o que caiga en un bucle infinito del cual se llegue a colgar, además
se debe tener cuidado al momento de ingresar la cantidad de números que
generamos ya que si se llega a pedir una cantidad exagerada de números el
programa puede llegar a congelarse hasta incluso el computador.
Por ultimo se debe interpretar de manera correcta los resultados para que no
exista ningún tipo de confusión a la hora de comprobar mediante una prueba de
escritorio.
14
CONCLUSIONES
El sistema puede generar números seudoaleatorios por medio del algoritmo
congruencial multiplicativo.
El sistema esta diseñado para que ha medida que van pasando cada prueba se
desplegarán diferentes botones de interacción.
15
BIBLIOGRAFÍA
Bu, R. C. (1994). Simulación Un enfoque práctico. Limusa .
16