Upload
omar-ascencio-saavedra
View
124
Download
2
Embed Size (px)
DESCRIPTION
Un poco de teoría sobre como se generan los números pseudo-aleatorios usando métodos como "el cuadrado medio" y"congruencia lineal"
Citation preview
GENERACIÓN DE NÚMEROS ALEATORIOS
(RANDOMS)
NUMEROS ALEATORIOS
Los números random son un elemento básico en la
simulación de la mayoría de los sistemas
discretos.
Cada número random Ri es una muestra
independiente de una distribución uniforme y
continua en el intervalo (0,1).
NÚMEROS ALEATORIOS
0, x < 0
F(x) x, 0 x 1
1, x<1
1
F(x)
1
1, 0 x 1
f(x)
0, en otro caso
1
f(x)
1
NÚMEROS ALEATORIOS
* La probabilidad de observar un valor en un particularintervalo es independiente del valor previo observado.
* Todo punto en el rango tiene igual probabilidad de serelegido.
* Si el intervalo (0,1) es dividido en n sub-intervalos deigual longitud, el número esperado de observaciones encada intervalo es N/n. (N número de observacionestotales).
El objetivo de cualquier esquema de
generación (generador), es producir una
secuencia de números entre 0 y 1 que simule
las propiedades ideales de distribución
uniforme y de independencia.
GENERADOR DE NÚMEROS
ALEATORIOS
NÚMEROS PSEUD0-ALEATORIOS
•Los números aleatorios son calculados a partir de
una semilla (seed) y una fórmula.
•El problema es que si el método es conocido,
entonces la secuencia de números random puede ser
replicada.
•En la práctica ninguna función produce datos
aleatorios verdaderos -- las funciones producen
números pseudo-aleatorios.
La mayoría de los métodos (generadores) comienzan
con un número inicial (semilla), a este número se le
aplica un determinado procedimiento y así se encuentra
el primer número random.
Usando este número como entrada, el procedimiento es
repetido para lograr un próximo número random.
Y así siguiendo.
TÉCNICAS PARA GENERAR
NÚMEROS ALEATORIOS
Método Del Cuadrado Medio: comienza con un número inicial
(semilla). Este número es elevado al cuadrado. Se escogen los
dígitos del medio de este nuevo número (según los dígitos que se
deseen) y se colocan después del punto decimal. Este número
conforma el primer número random.
Ejemplo: X0 = 5497
X02 = (5497)2 = 30,217,009 ===> X1 = 2170
R1 = 0.2170
X12 = (2170)2 = 04,708,900 ===> X2 = 7089
R2 = 0.7089
X22 = (7089)2 = 50,253,921 ===> X3 = 2539
TÉCNICAS PARA GENERAR
NÚMEROS ALEATORIOS
Método De Congruencia Lineal: produce una secuencia de
enteros X1, X2,... entre 0 y m-1 de acuerdo a la siguiente relación
recursiva:
Xi+1= (a * Xi + c) mod m, i=0,1,2,...
X0 es llamado semilla.
a es llamado el multiplicador constante.
c es el incremento.
m es el módulo.
El número aleatorio se encuentra de la siguiente manera:
R = X / m
TÉCNICAS PARA GENERAR NÚMEROS ALEATORIOS
Ejemplo: Utilice el método de Congruencia Lineal para generar
números aleatorios con las siguiente constantes:
X0 = 27 , a = 17, c = 43, m = 100
La secuencia de Xi y subsecuentes Ri serían:
X0 = 27
X1 = (17 * 27 + 43) mod 100 = 502 mod 100 = 2
R1 = 2/100 = 0.02
X2 = (17 * 2 + 43) mod 100 = 77 mod 100 = 77
R2 = 77/100 = 0.77
La selección de los parámetros del generador afecta drásticamente
las propiedades ideales y la longitud del ciclo.
TÉCNICAS PARA GENERAR NÚMEROS ALEATORIOS
FUNCIONES DE NÚMEROS (PSEUDO) ALEATORIOS EN LA BIBLIOTECA
ESTÁNDAR.
El conjunto más simple de funciones es:
int rand(void);
void srand(unsigned int semilla);
Un ejemplo sencillo del uso del tiempo de la fecha es
inicializando la semilla a través de una llamada:
srand( (unsigned int) time( NULL ) );
Generador Uniforme
-0.5
-0.25
0
0.25
0.5
0.75
1
1.25
1 27 53 79105 131157 183209 235 261287
ran
do
m
Generador Uniforme
-0.5
-0.25
0
0.25
0.5
0.75
1
1.25
0
ran
do
m
Generador Uniforme?
0
0.2
0.4
0.6
0.8
1
0 50 100
TEST PARA EL CHEQUEO DE
UNIFORMIDAD
Durante esta teoría le llamaremos:
F(x) a la Probabilidad Acumulada de una
Distribución Teórica, y
SN(x) a la Probabilidad Acumulada de una
Distribución Empírica
Valor Cantidad Frec SN(x)
Suponga que se necesita conocer la distribución que tiene la
siguiente secuencia de números?:
3-4-5-3-4-5-3-6-4-3
Si NO se conoce de antemano la probabilidad de un
fenómeno, entonces se debe construir su distribución
empírica (basadas en frecuencias)
3 4 4/10=0.4 4/10=0.4
4 3 3/10=0.3 7/10=0.7
5 2 2/10=0.2 9/10=0.9
6 1 1/10=0.1 10/10=1|
S_N(x) Función de Probabilidad Acumulada Empírica
0
0,2
0,4
0,6
0,8
1
1,2
3 4 5 6
SN(x)
TEST PARA EL CHEQUEO DE
UNIFORMIDAD
Test de Kolmogorov-Smirnov: compara la distribuciónde un conjunto de números generados con unadistribución uniforme.
Este test compara:
la función de Probabilidad Acumulada continua F(x) deuna Distribución Uniforme, con
la función de Probabilidad Acumulada empírica SN(x),de una muestra de N observaciones.
TEST DE KOLMOGOROV-SMIRNOV
Por definición, la Función de Probabilidad (o frecuencia)Acumulada (teórica) UNIFORME entre 0 y 1 tiene:
* F(x) = x, 0<=x<=1Mientras que una Función de Probabilidad (o frecuencia)Acumulada Empírica se encuentra:
* SN(x) = (cantidad de n.r. generados <=x ) / N
Este test se basa en la mayor desviación absoluta entre F(x) ySN(x) sobre todo el rango de la variable random.
Esto es: D = max|F(x) - SN(x)|
La distribución de D está tabulada como una función de N.
El test procede de la siguiente manera:
1- Ordena los datos de menor a mayor:
R(1)<=R(2)<=... <= R(N)
(R(i) denota la observación más pequeña.)
2- Computa:
D+ = max { i/N - R(i)}, 1<=i<=N
D- = max { R(i)- (i-1)/N}, 1<=i<=N
3- Computa D = max (D+,D-).
El test procede de la siguiente manera (continuación):
4- Determina el valor crítico, D para el nivel designificancia alfa y tamaño de muestra N, (estos valoresestán tabulados).
5- Si la muestra estadística diferencia ha D es masgrande que el valor crítico, D, la hipótesis nula esrechazada.Si D <= D concluye que ninguna diferenciasignificativa ha sido detectada entre la verdaderadistribución de {R1,R2 ..., RN} y la distribuciónuniforme.
Ejemplo Para Ejecutar Test De Uniformidad (Kolmogorov - Smirnov)
Suponer que se generaron cinco números random y que
se desea ejecutar el test de K.S. para un nivel de
significancia = 0.05
Orden cronológico:
Orden numérico creciente:
R1 R2 R3 R3 R5
0.03 0.58 0.87 0.32 0.95
R(1) R(2) R(3) R(3) R(5)
0.03 0.32 0.58 0.87 0.95
Ejemplo (continuación)
0.1 0.2 0.3 0.4 0.5 0.6
0.6
0.5
0.4
0.3
0.2
0.1
0
0.03 0.32 0.58
0
D.Teórica
F(x) = R(i)
0.03 0.32 0.58 0.87 0.95
D.Empírica
SN(x)= i/N
0.2 0.4 0.6 0.8 1
i/N – R(i)
(D+ :dif. sup.)
0.17 0.08 0.02 0.05
R(i) - (i-1)/N
(D- :dif. inf.)
0.03 0.12 0.18 0.27 0.15
Evaluación:
Ejemplo (continuación)
Continuar este ejemplo.....
GENERACIÓN DE VARIABLES ALEATORIAS
(1era. Parte)
GENERACIÓN DE VARIABLES ALEATORIAS EMPÍRICAS DISCRETAS
Variable Probabilidad Acumulada
20 grs. 0.3 0.3
19 grs. 0.4 0.7
18 grs. 0.3 1
Suponga que un determinado fenómeno aleatorio
tiene la siguiente distribución de probabilidad:
0
0.2
0.4
0.6
0.8
1
20 19 18
gramos
pro
b.a
cu
mu
lad
a
0.33
0.91
TÉCNICA DE LA TRANSFORMADA INVERSA (Generalización de Montecarlo)
0
0.2
0.4
0.6
0.8
1
20 19 18
gramos
pro
b.a
cu
mu
lad
a
TECNICA DE LA TRANSFORMADA INVERSA (Generalización de Montecarlo)
Variable Probabilidad Acumulada
20 grs. 0.3 0.3
19 grs. 0.4 0.7
18 grs. 0.3 1
0 R 0.3 entonces x = 20 grs.
0.3 < R 0.7 entonces x = 19 grs.
0.7 < R 1 entonces x = 18 grs.
TECNICA DE LA TRANSFORMADA INVERSA (Generalización de Montecarlo)
Transformada Inversa Distribuciones Empíricas Continuas
Suponga que se han coleccionado 100
tiempos de reparación de un elemento
intev.(hs) frecuencia frec.relativa frec.acumulda
0.0-0.5 31 0.31 0.31
0.5-1.0 10 0.10 0.41
1.0-1.5 25 0.25 0.66
1.5-2.0 34 0.34 1
Transformada Inversa Distribuciones Contínuas
distribución empírica
0
0.310.41
0.66
1
0
0.2
0.4
0.6
0.8
1
0.5 1 1.5 2
tiempos de reparación
pro
ba
bil
ida
d
ac
um
ula
da
F(x)
)(ˆ xF
Transformada Inversa
Gráficamente
distribución empírica
0
0.31
0.41
0.66
1
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
0.5 1 1.5 2
Generamos
Ri= 0.83
vamos hasta
la curva y
encontramos
Xi
Xi iRFX 1
1
Transformada Inversa
Algebraicamente:
distribución empírica
0
0.31
0.41
0.66
1
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
0.5 1 1.5 2
Dado Ri= 0.83
(entre 0.66 y 1),
Xi es computado
por una
interpolación
lineal entre
1.5 y 2
5.1266.01
66.05.1
i
i
RX
Transformada Inversa
Algebraicamente:
distribución empírica
0
0.31
0.41
0.66
1
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
0.5 1 1.5 2
Dado Ri= 0.83
(entre 0.66 y 1),
Xi es computado
por una
interpolación
lineal entre
1.5 y 2
1.75
0.83
5.1266.01
66.083.05.175.1
GENERACIÓN DE VARIABLES ALEATORIAS
(2da. Parte)
Empírica Discreta (Monte Carlo) OK
Empírica Contínua (Interpolación) OK
Teórica Discreta: Poisson
Teórica Contínua: Uniforme, Exponencial, Normal