Simulación
Generación de números
pseudoaleatorios (aleatorios)
VÍCTOR VIERA BALANTA
http://www.youtube.com/user/vieravictor01
Antes de abordar la generación de números
aleatorios se mencionará su utilidad.
Para que sirven los números aleatorios en el campo
de la simulación.
En el entorno(el mundo, universo) se presentan
sucesos que dependen de diferentes fenómenos,
circunstancias. Muchos de estos sucesos son
impredecibles y se presentan de un momento a otro
VÍCTOR VIERA BALANTA
Números aleatorios
http://www.youtube.com/user/vieravictor01
http://www.youtube.com/playlist?list=PL2FC180FECDC9635E
La simulación, apoyada en los números aleatorios, trata de
“copiar”, “imitar", "seguir” este comportamiento donde
se presentan eventos periódicamente. Eventos que
dependen de determinadas circunstancias.
Los números aleatorios, por su forma de presentarse, de
generarse se utilizaran para crear modelos que se apoyen
en estos para generar eventos, sucesos con una
determinada periodicidad.
En otras palabras, se puede afirmar que los números
aleatorios serán el “motor” generador de eventos, sucesos
para un determinado modelo computacional.
VÍCTOR VIERA BALANTA
Números aleatorios
http://www.youtube.com/user/vieravictor01
http://www.youtube.com/playlist?list=PL2FC180FECDC9635E
VÍCTOR VIERA BALANTA
Números aleatorios
NUMEROS ALEATORIOSComportamiento,
Dinamismo
Modelo
Figura 1. Los números aleatorios proporcional el
comportamiento del Modelo.
Los números aleatorios permiten generar eventos, sucesos
similar al mundo real. Los números aleatorios estarán en el
intervalo (0,1)
VÍCTOR VIERA BALANTA
Números aleatorios
Von Neumann fue el primero en plantear la generación de
números que parecieran aleatorios, por medio de las
operaciones matemáticas del computador (Ríos David, 2009)
Generadores Congruencia les:
Xn+1 = (aXn + b ) modulo m
ri = Xn+1/m
Donde a, b y m son números, preferiblemente primos, que
ayudan a la adecuada generación de números. El número a es
denominado multiplicador , b sesgo y m nos da el máximo
periodo
VÍCTOR VIERA BALANTA
Números aleatorios
Ejemplo:
Generar números con a=9,b=0,m=13, semilla X0 = 4
Xn+1 = (aXn + b ) modulo m
ri = Xn+1/m
--------------------------------------------------------------------------
Xn+1 = (9*4 + 0 ) modulo 13
Xn+1 = (36) modulo 13=10
ri = 10/13 = 0,76923(primer número)
http://www.youtube.com/user/vieravictor01
http://www.youtube.com/playlist?list=PL2FC180FECDC9635E
VÍCTOR VIERA BALANTA
Números aleatorios
Ejemplo:
Generar números con a=9,b=0,m=13, semilla X0 = 4
Xn+1 = (aXn + b ) modulo m
ri = Xn+1/m
--------------------------------------------------------------------------
Xn+1 = (9*10 + 0 ) modulo 13
Xn+1 = (90) modulo 13=12
ri = 12/13 = 0,9230(segundo número)
http://www.youtube.com/user/vieravictor01
http://www.youtube.com/playlist?list=PL2FC180FECDC9635E
VÍCTOR VIERA BALANTA
Números aleatorios
Ejemplo:
Generar números con a=9,b=0,m=13, semilla X0 = 4
Xn+1 = (aXn + b ) modulo m
ri = Xn+1/m
--------------------------------------------------------------------------
Xn+1 = (9*12 + 0 ) modulo 13
Xn+1 = (108) modulo 13=4
ri = 4/13 = 0,3076(tercer número)
http://www.youtube.com/user/vieravictor01
http://www.youtube.com/playlist?list=PL2FC180FECDC9635E
VÍCTOR VIERA BALANTA
Números aleatorios
Ejemplo:
Generar números con a=9,b=0,m=13, semilla X0 = 4
Xn+1 = (aXn + b ) modulo m
ri = Xn+1/m
--------------------------------------------------------------------------
Xn+1 = (9*4 + 0 ) modulo 13
Xn+1 = (36) modulo 13=10
ri = 10/13 = 0,7692(cuarto número)
se repitió el número
http://www.youtube.com/user/vieravictor01
http://www.youtube.com/playlist?list=PL2FC180FECDC9635E
VÍCTOR VIERA BALANTA
Números aleatorios
Condiciones para un buen generador de números
secuenciales (Raczynski Stanuslaw,1993, pag24).
1. La distribución de los números debe ser uniforme en el
intervalo [0,1]
2. Los números deben ser independientes dentro de toda la
serie generada
3. El ciclo del generador debe ser bastante grande, si se repite
un número debe ser después de generar muchos números
aleatorios.
4. Toda la serie debe ser repetible, posibilidad de correr el
mismo programa varias veces con la misma serie de
números aleatorios .
5. El generador debe ser rápido y ocupar poco espacio en la
memoria.
VÍCTOR VIERA BALANTA
Números aleatorios
El lenguaje de programación Java cuenta con una clase
“Random “que permite generar números aleatorios.
http://www.youtube.com/user/vieravictor01
http://www.youtube.com/playlist?list=PL2FC180FECDC9635E
VÍCTOR VIERA BALANTA
Números aleatorios
La salida del programa con diferentes semillas :
Semilla igual a 10 Semilla igual a 15
0.7304302967434272
0.2578027905957804
0.059201965811244595
0.24411725056425315
0.8188090228552316
0.37061112601364143
0.8562829329414597
0.7149846763958975
0.2872568868144405
0.9162469512617625
0.7299823878824023
0.10552478460052028
0.9106890605104496
0.15551743026783382
0.6698621362863425
0.7351050399591992
0.7488610539585506
0.4901039491087238
0.6273188857680094
0.8954117834298776
http://www.youtube.com/user/vieravictor01
http://www.youtube.com/playlist?list=PL2FC180FECDC9635E
VÍCTOR VIERA BALANTA
Números aleatorios
Ejemplo de la utilización de números aleatorios:
Se necesita simular la tirada de un dado simétrico.
El dado tiene 6 caras con los números de 1 al 6 en cada cara
http://salondellibroinfantilyjuvenil.wordpress.com/category/uncategorized/page/3/, Marzo 2012
Fuente imágenes : http://www.efeblog.com/5-juegos-de-mesa-imprescindibles-3304/dados/#.T12fdXlYhu4 Marzo, 2012
VÍCTOR VIERA BALANTA
Números aleatorios
Para simular este comportamiento de la lanzada de un dado
se utilizará la distribución uniforme, la cual permite “imitar” el
comportamiento de valores al azar en un rango. En este caso
1-6
X = a+(b-a)*ri
Donde
a, para este ejemplo es 1
b,es 6y ries un número aleatorio entre 0 y 1
Antes de mostrar el en java programa se puede hacer un
calculo manual
X = a+(b-a)*ri
Se seleccionar un número aleatoria ya generado (0.7304)
X = 1+(6-1)* 0.7304
X = 1+(5)* 0.7304
X = 1+(5)* 0.7304
X = 1+(3.652) = 4.652 = 5
Cinco (5) seria el primer resultado de tirar
el dado virtual
VÍCTOR VIERA BALANTA
Números aleatorios
VÍCTOR VIERA BALANTA
Números aleatorios
Programa en el lenguaje de programación Java
http://www.youtube.com/user/vieravictor01
http://www.youtube.com/playlist?list=PL2FC180FECDC9635E
VÍCTOR VIERA BALANTA
Números aleatorios
Salidas del Programa en el lenguaje de programación Java que
simula arrojar un dado 5 veces
Semilla 15 Semilla 10 Semilla 11
el resultado es: 5.0
el resultado es: 2.0
el resultado es: 6.0
el resultado es: 2.0
el resultado es: 4.0
el resultado es: 5.0
el resultado es: 2.0
el resultado es: 1.0
el resultado es: 2.0
el resultado es: 5.0
el resultado es: 5.0
el resultado es: 3.0
el resultado es: 4.0
el resultado es: 1.0
el resultado es: 2.0
VÍCTOR VIERA BALANTA
Números aleatorios
Conclusión
Los números aleatorios simular el comportamiento, como el
lanzar un dado.
Los números aleatorios brindan ese comportamiento
“impredecible”, y le dan “vida” a un modelo de simulación
para que, por medio del modelo, se pueda experimentar,
comprender, interactuar con una abstracción de sistema real.
http://www.youtube.com/user/vieravictor01
http://www.youtube.com/playlist?list=PL2FC180FECDC9635E
VÍCTOR VIERA BALANTA
Números aleatorios
Bibliografía
Ríos D, Sixto, Martin J, Jiménez A, (2009) Simulación Métodos y Aplicaciones, Alfa
Omega-Ra-Ma.
Ríos D, Rios Sixto, Martin J, (2000) Simulación Métodos y Aplicaciones, Alfa Omega-
Ra-Ma.
Raczynski S, (1993) Simulación por Computadora, Megabyte, Grupo Noriega
Editores.
Guasch A, Piera M, Casanovas J,Figueras J, (2005) Modelado y Simulación,
Aplicaciones procesos logísticos de fabricación y servicios, Alfa Omega
Creus A, (1989) Simulación de procesos con Pc, Marcombo S.A
http://www.youtube.com/user/vieravictor01
http://www.youtube.com/playlist?list=PL2FC180FECDC9635E
VÍCTOR VIERA BALANTA
Números aleatorios
Gracias

Generador de números aleatorios

  • 1.
    Simulación Generación de números pseudoaleatorios(aleatorios) VÍCTOR VIERA BALANTA http://www.youtube.com/user/vieravictor01
  • 2.
    Antes de abordarla generación de números aleatorios se mencionará su utilidad. Para que sirven los números aleatorios en el campo de la simulación. En el entorno(el mundo, universo) se presentan sucesos que dependen de diferentes fenómenos, circunstancias. Muchos de estos sucesos son impredecibles y se presentan de un momento a otro VÍCTOR VIERA BALANTA Números aleatorios http://www.youtube.com/user/vieravictor01 http://www.youtube.com/playlist?list=PL2FC180FECDC9635E
  • 3.
    La simulación, apoyadaen los números aleatorios, trata de “copiar”, “imitar", "seguir” este comportamiento donde se presentan eventos periódicamente. Eventos que dependen de determinadas circunstancias. Los números aleatorios, por su forma de presentarse, de generarse se utilizaran para crear modelos que se apoyen en estos para generar eventos, sucesos con una determinada periodicidad. En otras palabras, se puede afirmar que los números aleatorios serán el “motor” generador de eventos, sucesos para un determinado modelo computacional. VÍCTOR VIERA BALANTA Números aleatorios http://www.youtube.com/user/vieravictor01 http://www.youtube.com/playlist?list=PL2FC180FECDC9635E
  • 4.
    VÍCTOR VIERA BALANTA Númerosaleatorios NUMEROS ALEATORIOSComportamiento, Dinamismo Modelo Figura 1. Los números aleatorios proporcional el comportamiento del Modelo. Los números aleatorios permiten generar eventos, sucesos similar al mundo real. Los números aleatorios estarán en el intervalo (0,1)
  • 5.
    VÍCTOR VIERA BALANTA Númerosaleatorios Von Neumann fue el primero en plantear la generación de números que parecieran aleatorios, por medio de las operaciones matemáticas del computador (Ríos David, 2009) Generadores Congruencia les: Xn+1 = (aXn + b ) modulo m ri = Xn+1/m Donde a, b y m son números, preferiblemente primos, que ayudan a la adecuada generación de números. El número a es denominado multiplicador , b sesgo y m nos da el máximo periodo
  • 6.
    VÍCTOR VIERA BALANTA Númerosaleatorios Ejemplo: Generar números con a=9,b=0,m=13, semilla X0 = 4 Xn+1 = (aXn + b ) modulo m ri = Xn+1/m -------------------------------------------------------------------------- Xn+1 = (9*4 + 0 ) modulo 13 Xn+1 = (36) modulo 13=10 ri = 10/13 = 0,76923(primer número) http://www.youtube.com/user/vieravictor01 http://www.youtube.com/playlist?list=PL2FC180FECDC9635E
  • 7.
    VÍCTOR VIERA BALANTA Númerosaleatorios Ejemplo: Generar números con a=9,b=0,m=13, semilla X0 = 4 Xn+1 = (aXn + b ) modulo m ri = Xn+1/m -------------------------------------------------------------------------- Xn+1 = (9*10 + 0 ) modulo 13 Xn+1 = (90) modulo 13=12 ri = 12/13 = 0,9230(segundo número) http://www.youtube.com/user/vieravictor01 http://www.youtube.com/playlist?list=PL2FC180FECDC9635E
  • 8.
    VÍCTOR VIERA BALANTA Númerosaleatorios Ejemplo: Generar números con a=9,b=0,m=13, semilla X0 = 4 Xn+1 = (aXn + b ) modulo m ri = Xn+1/m -------------------------------------------------------------------------- Xn+1 = (9*12 + 0 ) modulo 13 Xn+1 = (108) modulo 13=4 ri = 4/13 = 0,3076(tercer número) http://www.youtube.com/user/vieravictor01 http://www.youtube.com/playlist?list=PL2FC180FECDC9635E
  • 9.
    VÍCTOR VIERA BALANTA Númerosaleatorios Ejemplo: Generar números con a=9,b=0,m=13, semilla X0 = 4 Xn+1 = (aXn + b ) modulo m ri = Xn+1/m -------------------------------------------------------------------------- Xn+1 = (9*4 + 0 ) modulo 13 Xn+1 = (36) modulo 13=10 ri = 10/13 = 0,7692(cuarto número) se repitió el número http://www.youtube.com/user/vieravictor01 http://www.youtube.com/playlist?list=PL2FC180FECDC9635E
  • 10.
    VÍCTOR VIERA BALANTA Númerosaleatorios Condiciones para un buen generador de números secuenciales (Raczynski Stanuslaw,1993, pag24). 1. La distribución de los números debe ser uniforme en el intervalo [0,1] 2. Los números deben ser independientes dentro de toda la serie generada 3. El ciclo del generador debe ser bastante grande, si se repite un número debe ser después de generar muchos números aleatorios. 4. Toda la serie debe ser repetible, posibilidad de correr el mismo programa varias veces con la misma serie de números aleatorios . 5. El generador debe ser rápido y ocupar poco espacio en la memoria.
  • 11.
    VÍCTOR VIERA BALANTA Númerosaleatorios El lenguaje de programación Java cuenta con una clase “Random “que permite generar números aleatorios. http://www.youtube.com/user/vieravictor01 http://www.youtube.com/playlist?list=PL2FC180FECDC9635E
  • 12.
    VÍCTOR VIERA BALANTA Númerosaleatorios La salida del programa con diferentes semillas : Semilla igual a 10 Semilla igual a 15 0.7304302967434272 0.2578027905957804 0.059201965811244595 0.24411725056425315 0.8188090228552316 0.37061112601364143 0.8562829329414597 0.7149846763958975 0.2872568868144405 0.9162469512617625 0.7299823878824023 0.10552478460052028 0.9106890605104496 0.15551743026783382 0.6698621362863425 0.7351050399591992 0.7488610539585506 0.4901039491087238 0.6273188857680094 0.8954117834298776 http://www.youtube.com/user/vieravictor01 http://www.youtube.com/playlist?list=PL2FC180FECDC9635E
  • 13.
    VÍCTOR VIERA BALANTA Númerosaleatorios Ejemplo de la utilización de números aleatorios: Se necesita simular la tirada de un dado simétrico. El dado tiene 6 caras con los números de 1 al 6 en cada cara http://salondellibroinfantilyjuvenil.wordpress.com/category/uncategorized/page/3/, Marzo 2012 Fuente imágenes : http://www.efeblog.com/5-juegos-de-mesa-imprescindibles-3304/dados/#.T12fdXlYhu4 Marzo, 2012
  • 14.
    VÍCTOR VIERA BALANTA Númerosaleatorios Para simular este comportamiento de la lanzada de un dado se utilizará la distribución uniforme, la cual permite “imitar” el comportamiento de valores al azar en un rango. En este caso 1-6 X = a+(b-a)*ri Donde a, para este ejemplo es 1 b,es 6y ries un número aleatorio entre 0 y 1
  • 15.
    Antes de mostrarel en java programa se puede hacer un calculo manual X = a+(b-a)*ri Se seleccionar un número aleatoria ya generado (0.7304) X = 1+(6-1)* 0.7304 X = 1+(5)* 0.7304 X = 1+(5)* 0.7304 X = 1+(3.652) = 4.652 = 5 Cinco (5) seria el primer resultado de tirar el dado virtual VÍCTOR VIERA BALANTA Números aleatorios
  • 16.
    VÍCTOR VIERA BALANTA Númerosaleatorios Programa en el lenguaje de programación Java http://www.youtube.com/user/vieravictor01 http://www.youtube.com/playlist?list=PL2FC180FECDC9635E
  • 17.
    VÍCTOR VIERA BALANTA Númerosaleatorios Salidas del Programa en el lenguaje de programación Java que simula arrojar un dado 5 veces Semilla 15 Semilla 10 Semilla 11 el resultado es: 5.0 el resultado es: 2.0 el resultado es: 6.0 el resultado es: 2.0 el resultado es: 4.0 el resultado es: 5.0 el resultado es: 2.0 el resultado es: 1.0 el resultado es: 2.0 el resultado es: 5.0 el resultado es: 5.0 el resultado es: 3.0 el resultado es: 4.0 el resultado es: 1.0 el resultado es: 2.0
  • 18.
    VÍCTOR VIERA BALANTA Númerosaleatorios Conclusión Los números aleatorios simular el comportamiento, como el lanzar un dado. Los números aleatorios brindan ese comportamiento “impredecible”, y le dan “vida” a un modelo de simulación para que, por medio del modelo, se pueda experimentar, comprender, interactuar con una abstracción de sistema real. http://www.youtube.com/user/vieravictor01 http://www.youtube.com/playlist?list=PL2FC180FECDC9635E
  • 19.
    VÍCTOR VIERA BALANTA Númerosaleatorios Bibliografía Ríos D, Sixto, Martin J, Jiménez A, (2009) Simulación Métodos y Aplicaciones, Alfa Omega-Ra-Ma. Ríos D, Rios Sixto, Martin J, (2000) Simulación Métodos y Aplicaciones, Alfa Omega- Ra-Ma. Raczynski S, (1993) Simulación por Computadora, Megabyte, Grupo Noriega Editores. Guasch A, Piera M, Casanovas J,Figueras J, (2005) Modelado y Simulación, Aplicaciones procesos logísticos de fabricación y servicios, Alfa Omega Creus A, (1989) Simulación de procesos con Pc, Marcombo S.A http://www.youtube.com/user/vieravictor01 http://www.youtube.com/playlist?list=PL2FC180FECDC9635E
  • 20.