Introducción
Esta unidad tiene como objetivo la generación de datos “aleatorios” que siguen un comportamiento requerido para las simulaciones a realizar en la etapa 7, llamada Escenarios de análisis. La elaboración algorítmica de números pseudoaleatorios permite, al aplicarse en un modelo raíz, colocar al modelo verificado bajo situaciones que de forma natural podrían no darse. Por ejemplo, mega terremotos o caída de partículas interestelares que por su dimensión podrían ser causantes de una nueva extinción masiva y no se podrían analizar mediante un modelo físico, ya sea por costos o por la dificultad de aplicarse en un sistema menos estructurado.
Finalmente, esta unidad va a presentar una primera aproximación a una simulación analítica autónoma en un modelo de transporte de una vía con cuatro intersecciones. Este ejemplo final permite comprender el papel que desempeña la construcción de números pseudoaleatorios en el análisis de escenarios y cómo, una herramienta computacional, consigue recrear situaciones similares a los observados de forma experimental y determinar la “estabilidad” de la señal de salida generada por el modelo.
Propósitos de aprendizaje
Propósito general
Reconocer las diferentes técnicas de generación de números pseudoaleatorios para la elaboración de datos que representen variables continuas o discretas.
Propósitos específicos
- Comprender diferentes métodos de elaboración de números pseudoaleatorios para una distribución uniforme en el intervalo [0,1].
- Realizar análisis estadístico de valores pseudoaleatorios para propiedades del conjunto como la independencia entre valores consecutivos y su distribución en el intervalo [0,1].
- Generar variables aleatorias que permitan la simulación de eventos no determinísticos en un modelo analítico construido.
Números pseudoaleatorios
Una vez hemos generado un modelo para nuestra simulación necesitamos generar un alto volumen de datos que permita poner a prueba nuestro modelo, de tal forma que sigan ciertos comportamientos como, por ejemplo, que se encuentren en cierto intervalo o como una distribución de probabilidad dada.
Los procesos aritméticos o computacionales que se usan para la obtención de estos valores se conocen como generadores de números pseudoaleatorios, se incluye el prefijo “pseudo” debido a que no son del todo aleatorios. Un programa computacional tiene la posibilidad de producir diferentes números con un periodo de vida relativamente alto, es decir, de tal forma que la misma secuencia de valores se vuelva a presentar.
![]() |
¿Sabías que los token entregados por algunos bancos para mejorar la seguridad de las transacciones virtuales corresponde a un generador de números pseudoaleatorios mediante un algoritmo muy robusto que se sincroniza con la página del banco de tal manera que los 6 dígitos presentados en el dispositivo coincidan con la clave de acceso provisional en el sistema? |
Números pseudoaleatorios
Generadores lineales congruenciales
Sean a, c, m números naturales, vamos a definir la siguiente sucesión recursiva de números enteros z0,z1,z2,..., definida como:
Zi = (azi-1 + c) (mód m)
Donde el módulo m de un número entero, simplemente es el residuo obtenido al realizar la división entre el número dado y m.
Por ejemplo, 19 (mod 4) es igual a 3, toda vez que al dividir 19 entre 4, la segunda cantidad se encuentra cuatro veces en el primero y su residuo es 3. Una vez obtengamos la sucesión de valores zi, los números pseudoaleatorio entre [0,1) que se van a generar son de la forma:
Esta definición genera automáticamente dos controversias:
- El número diferente de valores aleatorios son una fracción del siguiente listado: 0, 1/m, 2/m, 3/m, 4/m, ..., (m - 1)/ m.
- No es necesario conocer el término zi, para calcular el término zi+1. Simplemente la fórmula:
Permite obtener dicho valor, sin conocer los predecesores.
Con el objetivo de que dichos valores no se repitan tan seguido, es usual elegir módulos primos muy grandes (mayores a 2100), de tal forma que la órbita, es decir, los valores que se producen por las iteraciones tengan exactamente ese valor.
![]() |
A continuación veamos un ejemplo de este generador de líneas congruenciales |
Números pseudoaleatorios
Generadores congruenciales generales
Conociendo la limitación que poseen los generadores de congruencias lineales, se han elaborado diferentes esquemas asociados con la congruencia, de tal forma que permitan extender el periodo cuando el módulo no es primo. Estas formas se agrupan en un conjunto conocido como los generados congruenciales generales, que básicamente tienen la siguiente estructura:
Zi = f (zi-1, zi-2, ..., zi-j) (mód m)
En algunos textos como Knuth (1998, pp.26-36) o L’Ecuyer (2012) se encuentra mayor información sobre condiciones óptimas que permitan a una función arbitraria f extender la longitud de su órbita. Aquí, sólo mencionaremos un par de ejemplos, que son ampliamente conocidos, pero se invita a que profundicen sobre técnicas de generación de valores pseudoaleatorios.
Números pseudoaleatorios
Generadores no congruenciales
En el desarrollo de técnicas para generación de números pseudoaleatorios, no sólo se ha experimentado con congruencias modulares, por ejemplo. Se ha probado usando los dígitos de la expresión decimal de números irracionales, que por definición van a ser secuencias aperiódicas, pero, tienen un alto costo computacional. Estos generadores que no usan las congruencias modulares se agrupan en una categoría conocida como los generadores no congruenciales y aunque algunos son cuestionables en cuanto a la “aleatoriedad” de sus resultados, son usados en algunos modelos por su facilidad de implementación.
A continuación estudiaremos dos métodos que hacen parte de estos generadores: método de los cuadrados medios y método de productos medios.
Actividad de aprendizaje
![]() |
A continuación genere los números aleatorios para un modelo que permita simular el número de vehículos que cruzan por una intersección. |
Pruebas estadísticas para números pseudoaleatorios
El concepto de “aleatorio” se relaciona estrechamente con la obtención de resultados imprevistos, por ejemplo, la derrota de un equipo de futbol que es favorito a ganar o la posibilidad que un rayo impacte a una persona. Estos eventos, aunque son factibles, son poco predecibles y estimar su ocurrencia es improbable. De esta misma manera deberían ser los números generados, la aparición de uno de ellos no debería presentar relación alguna con los siguientes, pero, al aplicar métodos recursivos, este condicionamiento se da como hecho, tal como se presenta en el gráfico principal de esta pantalla.
Como no es posible generar valores que realmente sean aleatorios, se “permite” cierto grado de dependencia entre los valores de la sucesión. Esta medición de “independencia” de los datos, se realiza mediante pruebas de hipótesis estadísticas que “verifican” ciertas características que deberían cumplir si realmente fueran aleatorios como lo son: el número de cadenas crecientes, la repetición del número de cifras en un valor generado, relación funcional entre dos datos consecutivos o la acumulación de los valores, lejos de la media. Estas pruebas estadísticas serán el tema central de este capítulo y se conocen como pruebas de independencia. El siguiente gráfico presenta un diagrama de flujo que permite resumir el proceso que debemos seguir para determinar si un conjunto de datos es pseudoaleatorios en el intervalo de [0,1].
![]() |
¿Sabías que los computadores cuánticos que usan cubits en vez de bits, tienen mayor facilidad para generar números pseudoaleatorios que las computadoras usuales, debido a que aprovechan el fenómeno de no-localidad cuántica? |
Pruebas estadísticas para números pseudoaleatorios
Pruebas de media y varianza
La primera prueba que realizaremos está relacionada con el comportamiento de los valores, lo primero que deberían cumplir es que la media y la varianza se comporten como los de la distribución U(0,1). Es decir, la media de los datos debería ser de 1/2 y la varianza de 1/12. Realizaremos estas pruebas con los valores pseudoaleatorios obtenidos en el capítulo 1, permitiéndonos ir clasificando su comportamiento. Vamos a suponer que un conjunto de números ri se distribuyen mediante la variable aleatoria X.
![]() |
Estudiemos el siguiente ejemplo, usando los 24 números pseudoaleatorios generados en el primer ejemplo de esta unidad. |
Pruebas estadísticas para números pseudoaleatorios
Prueba de uniformidad
Ahora que hemos comprobado que la media y la varianza se comportan como la distribución uniforme en el intervalo [0,1], vamos a aplicar las pruebas de ajuste de bondad vistas en la unidad 2 para confirmar que los datos se ajustan a una distribución uniforme. A diferencia de las primeras pruebas, excluimos los datos si ambas pruebas son rechazadas. Si no recuerda la estructura de las pruebas de ajuste de bondad, use el siguiente enlace para recordar estas pruebas.
![]() |
Realicemos las pruebas de ajuste de bondad con los datos del ejemplo de la pantalla anterior para el caso particular de la distribución uniforme. |
Pruebas estadísticas para números pseudoaleatorios
Prueba de independencia
Finalmente, vamos a determinar la independencia de los números. Para ello, vamos a realizar un conjunto de pruebas de hipótesis que buscan medir diferentes características de los datos como: el número de cadenas ascendentes entre términos consecutivos, el número de cifras repetidas en la expresión decimal, relación funcional entre los datos y el espacio entre ellos. En la siguiente interactividad se analizarán estas pruebas:
- Prueba Runs-up
- Prueba del póker
- Prueba de series
- Prueba de huecos
![]() |
¿Sabías que en un juego de póker Texas Hold’em los participantes se memorizan las probabilidad de cada evento posible de tal manera que les permitan arriesgarse cuando consideran que la probabilidad que pierdan es muy baja? |
Actividad de aprendizaje
![]() |
Realice varias pruebas de independencia usando una serie de números aleatorios. |
Generación de variables aleatorias
Con la elaboración de valores aleatorios entre (0,1) vamos a presentar cómo podemos generar valores pseudoaleatorios que se comporten de acuerdo a ciertas distribuciones de probabilidad. Para cada distribución de probabilidad iremos mencionando la forma en la que podremos generar valores aleatorios asociados a las distribuciones.
En caso que la función de distribución con la que desee trabajar no se encuentre en el listado presentado anteriormente, se invita a investigar acerca de la distribución específica, de manera puntual, cuál es el método que permite su generación. Se recomienda Law (1991, p. 451-470). Ahora, veamos unos ejemplos donde usaremos estas fórmulas.
![]() |
¿Sabías que en juegos como el ajedrez, el carcasone o el goo, las computadoras han encontrado una gran dificultad respecto a su programación debido a la cantidad de posibles jugadas y continuaciones que pueden existir? Por tal razón, cada dos años se citan a los mejores programadores del mundo al torneo de ajedrez virtual donde llevan sus paquetes y se enfrentan a torneos de mil partidas. Actualmente, la inteligencia artifical Stockfish es la número uno del mundo. |
Actividad de aprendizaje
![]() |
Relacione dos columnas de variables aleatorias, de acuerdo a unos valores establecidos en la actividad. |
Resumen
En el módulo 2, habíamos aprendido la aplicación que tienen ciertas distribuciones de probabilidad para el análisis de ciertos comportamientos que aparecen de forma frecuente en procesos de simulación como lo son: los tiempos de espera, atención o prestación de un servicio, tiempo esperado para la falla de un producto, entre otras. En esta unidad, nos enfocamos en la generación de números aleatorios que presenten el comportamiento de una distribución de probabilidad específica: exponencial, gamma o Weibull, entre otras. Para ello, iniciamos presentando técnicas para la generación de números aleatorios entre 0 y 1, suponiendo que la variable aleatoria que queremos simular se distribuye uniformemente.
Una vez, se haya comprobado que es posible asumir que los números generados se distribuyen de manera uniforme en el intervalo [0,1], podemos proceder a generar valores aleatorios de otras distribuciones de probabilidad siguiendo un grupo de fórmulas de diferente dificultad que permiten su generación tomando una o varias variables aleatorias
. Generados estos valores para una distribución de probabilidad específica, podemos proceder a realizar simulaciones de un modelo con el fin de ponerlo a prueba, estabilizarlo o estudiarlo.
Caso de estudio
![]() |
Genera dos simulaciones de un proceso de producción de un vehículo. Pon a prueba lo aprendido. |
Bibliografía ()
- Banks, J. (2004). Getting Started with AutoMod (2da ed.). Chelmsford, Massachusetts: Brooks Automation, Inc.
- Cheng, R.C.H. (1978). Generating beta variates with non-integral shape parameters. Communications of the ACM, 21(4), pp. 317–322. Doi: 10.1145/359460.359482
- Choi, B. K. & Kang, D. (2013). Modeling and simulation of discrete event systems. John Wiley & Sons Inc.
- García Dunna, E., García Reyes, H. & Cárdenas Barrón, L. (2006). Simulación y análisis de sistemas con ProModel. México: Pearson Educación.
- Kelton, W.D., Sadowski, R.P. & Swets N.B. (2010). Simulation with Arena (5ta ed.) New York : McGraw-Hill.
- Knuth, D. E. (1997). The Art of Computer Programming, Vol. 1: Fundamental Algorithms, (3ra ed). Massachusetts: Addison-Wesley.
- L’Ecuyer, P. (1999). Good Parameters and Implementations for Combined Multiple Recursive Random Number Generators. Operations Research, 47(1), pp. 159–164. Doi: . https://doi.org/10.1287/opre.47.1.159
- L’Ecuyer, P. (1996): Combined Multiple Recursive Random Number Generators. Operations Research, 44(5), pp. 816–822. Doi: 10.1287/opre.44.5.816
- Law, A., Kelton, W. D. (1991). Simulation modeling and analysis (2da ed.). New York: McGraw-Hill.
- MacLaren, M. D. & Marsaglia, G. (1965). Uniform Random Number Generators. Journal of the ACM, 12(1), pp. 83-89. Doi: 10.1145/321250.321257
- Von Neumann, J (1950). Various Techniques Used in Connection with Random Digits, Natl. Bur. Std. Appl. Math. Series 12, pp. 36–38.
Referencias Web
- Ictea. (2019). Base de conocimientos. Recuperado de http://www.ictea.com/cs/index.php?rp=/knowledgebase/8817/iQue-es-un-programa-compilador.html
- Lanner Group Ltd. (2013). WITNESS simulation software. Recuperado de https://www.lanner.com/en-us/technology/witness-simulation-software.html
- Programación estructurada (2017). Iteración. Recuperado de https://programacion6apm.gnomio.com/mod/glossary/showentry.php?eid=5
- Real Academia Española. (2014). Diccionario de la lengua española (32a ed.) Recuperado de https://dle.rae.es/?w=diccionario
- Sociedad Mexicana de Matemáticas. (2019). Día de π (Pi). Recuperado de https://www.smm.org.mx/eventos/pi/











