GENERACIÓN DE NÚMEROS ALEATORIOS (RANDOMS)
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 inde indep pend endient ientee de una distr istriibuci bució ón unif unifor orm me y continua en el intervalo (0,1).
NÚMEROS ALEATORIOS f(x) f(x)
1, 0 x 1 1
0, en otro caso 1
F(x) 0, x < 0 F(x)
x, 0 x 1 1, x<1
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 X 2 = (7089)2 = 50,253,921 ===> X = 2539
TÉCNICAS PARA GENERAR NÚMEROS ALEATORIOS Método De Congruencia Lineal: produce una secuencia de enteros X1, X 2,... 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:
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 X i y subsecuentes R i 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
Generador Uniforme
1.25
1.25
1
1
0.75 m o 0.5 d n 0.25 a r 0
m o 0.5 d n 0.25 a r
0.75
0
-0.25 0
-0.25 1 2 7 5 3 7 9 1 0 5 1 3 1 1 5 7 1 8 3 2 0 9 2 3 5 2 6 1 2 8 7 -0.5
-0.5
Generador Uniforme? 1 0.8 0.6 0.4 0.2 0 0
50
100
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
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)
Valor Cantidad Frec
S N (x)
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 1,2 1 0,8 0,6
SN(x)
0,4 0,2 0 3
4
5
6
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 (o frecuencia) Acumulada (teórica) UNIFORME entre 0 y 1 tiene:
* F(x) = x, 0<=x<=1 Mientras 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) y SN(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í t ico, 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í t ico, 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)
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
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 (1era. Parte)
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
TÉCNICA DE LA TRANSFORMADA INVERSA (Generalización de Montecarlo) 1
0.91
0.33
a d0.8 a l u m0.6 u c a . 0.4 b o r 0.2 p 0 20
19
gramos
18