Download número random.
Document related concepts
Transcript
NÚMEROS ALEATORIOS
DEPARTAMENTO DE
INFORMATICA
UNSL-2007
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
f(x)
f(x)
1,
0x 1
1
0,
en otro caso
1
F(x)
0,
x<0
x,
0x 1
1,
x<1
F(x)
1
1
NÚMEROS ALEATORIOS
* La probabilidad de observar un valor en un particular
intervalo es independiente del valor previo observado.
* Todo punto en el rango tiene igual probabilidad de ser
elegido.
* Si el intervalo (0,1) es dividido en n sub-intervalos de
igual longitud, el número esperado de observaciones en
cada intervalo es N/n. (N número de observaciones
totales).
GENERADOR DE NÚMEROS
ALEATORIOS
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.
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.
TÉCNICAS PARA GENERAR
NÚMEROS 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.
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 ) );
TEST PARA EL CHEQUEO DE
UNIFORMIDAD
Generador Uniforme
1.25
1.25
1
1
0.75
0.75
random
random
Generador Uniforme
0.5
0.25
0
0.5
0.25
0
-0.25 0
-0.251 27 53 79 05 31 57 83 09 35 61 87
1 1 1 1 2 2 2 2
-0.5
-0.5
Generador Uniforme?
1
0.8
0.6
0.4
0.2
0
0
50
100
TEST PARA EL CHEQUEO DE
UNIFORMIDAD
Test de Kolmogorov-Smirnov: compara
la
distribución de un conjunto de números generados
con una distribución uniforme.
Este test compara:
la función de Probabilidad Acumulada continua F(x)
de una 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 Acumulada
(teórica) uniforme entre 0 y 1 tiene:
* F(x) = x, 0<=x<=1
Mientras que una Función de Probabilidad 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) y
SN(x) sobre todo el rango de variable random.
Esto es:
D = max|F(x) - SN(x)|
La distribución de D está tabulada como una función de N.
Ejercitación de Distribución Empírica (SN(x))
Si no se conoce la probabilidad de un fenómeno se debe
trabajar con las distribuciones empíricas ( basadas en
frecuencias).
Ejemplo: Que distribución tiene la siguiente secuencia de
números?:
3-4-5-3-4-5-3-6-4-3
valor cantidad
frel.
frelAcum
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
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-).
Ejemplo (continuación)
0.6
0.5
0.4
0.3
0.2
0.1
0
0.1 0.2 0.3 0.4 0.5 0.6
0.03
0.32
0.58
El test procede de la siguiente manera (continuación):
4- Determina el valor crítico, D para el nivel de
significancia alfa y tamaño de muestra N, (estos valores
están tabulados).
5- Si la muestra estadística diferencia ha D es mas
grande que el valor crítico, D, la hipótesis nula es
rechazada.
Si D <= D concluye que ninguna diferencia
significativa ha sido detectada entre la
verdadera
distribución de {R1,R2 ..., RN} y la distribución
uniforme.
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: R1
R2
R3
R3
R5
0.03
0.58
0.87
0.32
0.95
Orden numérico creciente:
R(1)
R(2)
R(3)
R(3)
R(5)
0.03
0.32
0.58
0.87
0.95
Ejemplo (continuación)
Evaluación:
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
R(i) - (i-1)/N
(D- :dif. inf.)
0.03
0.12
0.18
0.27
Continuar este ejemplo.....
0.05
0.15
GENERACIÓN DE VARIABLES
ALEATORIAS EMPÍRICAS
TÉCNICA DE LA TRANSFORMADA INVERSA
DEPARTAMENTO DE
INFORMATICA
UNSL-2007
GENERACIÓN DE VARIABLES ALEATORIAS
EMPÍRICAS DISCRETAS
Suponga que un determinado fenómeno aleatorio
tiene la siguiente distribución de probabilidad:
Variable
Probabilidad
Acumulada
20 grs.
0.3
0.3
19 grs.
0.4
0.7
18 grs.
0.3
1
TECNICA DE LA TRANSFORMADA
INVERSA (Generalización de Montecarlo)
0.33
prob.acumulada
0.91
1
0.8
0.6
0.4
0.2
0
20
19
gramos
18
TECNICA DE LA TRANSFORMADA
INVERSA (Generalización de Montecarlo)
prob.acumulada
1
0.8
0.6
0.4
0.2
0
20
19
gramos
18
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
R 0.3 entonces
x = 20 grs.
0.3 < R 0.7 entonces
x = 19 grs.
0.7 < R 1
x = 18 grs.
0
entonces
Transformada Inversa
Distribuciones Empíricas Continuas
Suponga que se han coleccionado 100
tiempos de reparación de un elemento
intev.(hs)
0.0-0.5
0.5-1.0
1.0-1.5
1.5-2.0
frecuencia frec.relativa frec.acumulda
31
0.31
0.31
10
0.10
0.41
25
0.25
0.66
34
0.34
1
Transformada Inversa
Distribuciones Contínuas
Como no se conoce la D. Acum. Teórica , trabajo con la D. Empìrica
distribución empírica
Fˆ ( x)
probabilidad
acumulada
1
1
0.8
0.66
0.6
0.4
0.41
0.31
0.2
0
0
0.5
1
1.5
tiempos de reparación
2
F(x)
Transformada Inversa
Gráficamente:
distribución empírica
Generamos
Ri= 0.83
vamos hasta
la curva y
encontramos
Xi
1
0.9
0.8
0.7
0.6
0.5
0.4
0.3
0.2
0.1
0
1
0.66
0.41
0.31
0
0.5
X1 F
1
Ri
1
1.5
2
Xi
Transformada Inversa
Algebraicamente:
distribución empírica
Dado Ri= 0.83
1
(entre 0.66 y 1), 0.9
0.8
Xi es computado 0.7
0.6
por una
interpolación 0.5
0.4
lineal entre
0.3
0.2
1.5 y 2
0.1
0
1
0.66
0.41
0.31
0
0.5
1
Ri 0.66
X i 1.5
2 1.5
1 0.66
1.5
2
Transformada Inversa
Algebraicamente:
Dado Ri= 0.83
(entre 0.66 y 1),
Xi es computado
por una
interpolación
lineal entre
1.5 y 2
distribución empírica
1
0.9
0.8
0.7
0.6
0.5
0.4
0.3
0.2
0.1
0
1
0.83
0.66
0.41
0.31
0
0.5
1
0.83 0.66
1.75 1.5
2 1.5
1 0.66
1.5
2
1.75