Vous êtes sur la page 1sur 18

FACULTAD DE INGENIERÍA DE SISTEMAS.

SIMULACIÓN Y
MODELACIÓN. GUIA II

MSC. ING. JAIRO E MÁRQUEZ D.

Objetivo

 Conocer los conceptos básicos de la generación de números aleatorios


 Identificar los métodos utilizados para la generación de números aleatorios

Contenido

1. Conceptos básicos de probabilidad


2. Función de densidad de probabilidad
3. Generación de números rectangulares
4. Pruebas
a. Prueba de promedios
b. Prueba de frecuencias
c. Prueba de distancia
d. Prueba de series
e. Prueba de Kolmogorov-Smirnov
f. Prueba de Poker
g. Prueba de corrida
5. Generación de números aleatorios
a. Distribuidos uniformemente
b. Distribuidos No uniformemente
Desarrollo

1. Conceptos básicos de probabilidad

La probabilidad mide la frecuencia con la que se obtiene un resultado (o conjunto de


resultados) al llevar a cabo un experimento aleatorio, del que se conocen todos los
resultados posibles, bajo condiciones suficientemente estables. La teoría de la
probabilidad se usa extensamente en áreas como la estadística, la física, la matemática,
la ciencia y la filosofía para sacar conclusiones sobre la probabilidad de sucesos
potenciales y la mecánica subyacente de sistemas complejos.

En el estudio de la probabilidad se utilizan tres palabras clave:

• Experimento
• Resultado
• Evento

2. Función de densidad de probabilidad

La función de densidad de probabilidad (FDP) se utiliza en estadística con el


propósito de conocer cómo se distribuyen las probabilidades de un suceso o evento, en
relación al resultado del suceso. La función de densidad de probabilidad se representa
generalmente por f(x).

Matemáticamente la FDP (función de densidad de probabilidad) es la derivada de la


función distribución de probabilidad F(x), o de manera inversa, la función de
distribución es la integral de la función de densidad:

Las propiedades de FDP (a veces visto como PDF del inglés) son: 0 para toda x.

La definición formal de la función de densidad requiere de conceptos de la teoría de


la medida. Si una variable aleatoria X sigue una función de probabilidad X*P su
densidad con respecto a una medida de referencia μ es la derivada de Radon–Nikodym

Es decir, ƒ es una función con la propiedad de que

Para cada conjunto medible A.

La función de densidad no es propiamente única: dos funciones distintas pueden


representar la misma distribución de probabilidad si son distintas únicamente en un
conjunto de medida nula. Además, que puede haber distribuciones de probabilidad que
carezcan de función de densidad: sucede cuando, sin ser discretas, concentran su
probabilidad en conjuntos de medida nula; así sucede con la distribución de Cantor
cuando se toma la de Lebesgue como medida de referencia.

X es una variable aleatoria real y μ es la medida de Lebesgue, la función de densidad


es una función tal que,

De modo que si F es la función de distribución de X, entonces

Intuitivamente, se puede pensar que ƒ(x) dx es la probabilidad de que X asuma


valores en el intervalo infinitesimal [x, x + dx].

3. Generación de números rectangulares

Uno de los Pitágoras Eurito fue el que se dedicó a representar los números con
piedrecillas y, por este procedimiento, obtenemos los números “cuadrados” y los
números “rectangulares”. En efecto, si partiendo de la unidad vamos añadiendo
sucesivamente los números impares conforme al gnomon, obtenemos los números
cuadrados; mientras que si partimos de dos y le vamos añadiendo los números pares,
obtenemos los números rectángulos.

4. Pruebas

a. Prueba de promedios

Esta prueba es conocida como uniforme o rectangular, el valor esperado y la


varianza de una variable aleatoria uniformemente distribuida están dados por las
siguientes expresiones:

E(x) = 1″0 x dx = ½

Var = 1″0 (x - ½)2 dx = 1/12 /2 1 - /2

Una prueba de hipótesis de promedios puede ser planteada de la siguiente forma


Hipótesis nula Ho: = ½

Hipótesis alternativa H1: “ ½

En seguida, su promedio aritmético es evaluado de acuerdo a la siguiente expresión:

U = N.A.

Se determina el valor estadístico. Si, entonces se acepta la hipótesis de los números


pseudoaleatorios.

Ejercicio:

Paso 1: Ho : M = 1/2 con = 5%

Ho : M “ 1/2

0.828 0.744 0.663 0.169 0.090

0.365 0.151 0.105 0.646 0.198

0.073 0.915 0.245 0.584 0.647

0.414 0.296 0.460 0.237 0.671

0.608 0.700 0.353 0.414 0.963

X=

Z0 = /2= 0 1 - /2=

Conclusión: Prueba de los promedios

/2 /2

MEYER

n <= 30

N > 30

U U(x)

1
b. Prueba de frecuencias

El estadístico usado en esta prueba es:

FOi= frecuencia observada del i-ésimo subintervalo

FEi = frecuencia esperada del i-ésimo subintervalo

N = tamaño de la muestra

n = número de subintervalos

Este estadístico se compara con la cual representa una variable aleatoria Chi-
cuadrada con n-1 grados de libertad y un nivel de significancia. Si, entonces se acepta
la hipótesis. Usar pruebas de bondad de ajuste x2.

c. Prueba de distancia

Los números pseudoaleatorios generados son considerados como dígitos, entonces


la prueba consiste en contar el número de dígitos que aparecen entre ocurrencias
sucesivas de un mismo dígito. Por ejemplo, 58245, ilustra un hueco de tamaño 3 entre
los dos 5. La probabilidad de cada uno de los tamaños de hueco se obtiene con la
siguiente expresión:

Como teóricamente el valor del tamaño del hueco puede ser infinito, es conveniente
agrupar probabilidades para valores de i mayores o iguales a un determinado valor de n.
Tal sumatoria se obtiene de acuerdo con la siguiente expresión:

El estadístico que se usa en estas pruebas se obtiene como:

Entonces los números pasan la prueba. i ni Pi FOi Acum FEi FOi 0 81917 0.1 3 3
13(0.1)=1.3 3 1 78981 0.9 8 11 12(0.9)=1.17 8 2 97982 0.081 1 13 13(0.081)=1.053 1 3
7753 0.729 1 13 13(0.729)=9.477 1 4 72771 5 08160 6 64041 7 72141 8 25223 9 60814
NOTA = Entre los huecos no debe de haber frecuencia de 1 por lo tanto se sube al
anterior

(3–1.3)2/1.3 = 2.2231 (8–1.17)2 /1.17 = 39.871 (1–1.053)2 /1.053 = 0.00266 (1–.477)2


/9.477 = 7.5825 “ = 496792

X2

Frecuencias esperadas y observadas para los diferentes tamaños de huecos,


considerando a los números pseudoaleatorios generados como números reales. i Pi FOi
FEi 0 FO0 “= FOi ( ) 1 (1- ) FO1 “= FOi ( )(1- ) 2 (1- )2 FO2 “= FOi ( )(1- )2 . . . . . . . .
. . . . i (1- )i FOi “= FOi ( )(1- )i . . . . . . . . . . . . >=n (1- )n FOn “= FOi(1- )n total 1.0 “
FOi “= FOi 0.78961 0.05230 0.10699 0.55877 0.14151 0.76086 0.12079 0.27738
0.65726 0.76269 0.80548 0.82654 0.29453 0.20852 0.42989 0.58518 0.98611 0.34488
0.34358 0.11537 0.89898 0.57880 0.67621 0.05010 0.00121 0.28269 0.73059 0.70119
0.18284 0.49962 0.38618 0.76910 0.68334 0.55170 0.10850 0.79982 0.45679 0.21631
0.87616 0.55742 0.58972 0.33216 0.03185 0.61168 0.09264 0.69623 0.17028 0.05475
0.91512 0.76262 0.29931 0.30831 0.83358 0.51781 0.03272 0.57410 0.26593 0.85903
0.43308 0.35286 0.24000 0.65559 0.38507 0.90829 0.94187 0.93655 0.88809 0.81772
0.36982 0.19904 0.54325 0.62400 0.09133 0.41678 0.33954 0.58244 0.85853 0.88752
0.33729 0.15506 0.23949 0.53559 0.33381 0.49383 0.75103 0.19962 0.65002 0.74579
0.79113 0.63453 0.19157 0.40644 0.08128 0.73465 0.22724 0.22287 0.07281 0.64183
0.44267 0.72102
=0.3 =0.7 = “ ; 0.4
Pi = (1- )i para i = 0,1,2,3…

i Pi FOi FEi 0 0.4 12 40(0.4) = 6.00 1 0.24 12 40(0.4)(0.6) = 9.6 2 0.144 10 40(0.4)(0.6)
= 5.76 >=3 0.216 6 40(0.6) = 8.64 total 1.00 “70=40 “FE = 40

d. Prueba de series

Consiste en generar n números pseudoaleatorios de los cuales se forman parejas


aleatorias entre Ui y Ui+2. En seguida se determina la celda a que pertenece cada pareja
ordenada como en la figura. 1 (n-1)/n (n-2)/n 2/n 1/n 1/n 2/n (n-2)/n (n-1)/n 1 Con lo
cual se determina al frecuencia observada de cada celda. La frecuencia esperada de cada
una de las celdas se obtiene al dividir el total de parejas coordenadas por el total de
celdas. Finalmente, conocida la frecuencia observada y esperada de cada celda se
obtiene el estadístico:

Prueba de series. Para probar el grado de aleatoriedad entre Núm. sucesivos se forman
parejas de N donde N= números pseudoaleatorios. (U1, U2), (U2, U3), (U3, U4),. . .
(U8, U9), (U9, U10) En seguida, se determina la celda a que pertenece cada pareja. 1
n/n 4/n 3/n 2/n 1/n 0 1/n 2/n 3/n 1 n/n Con lo cual se determina la frecuencia esperada
de cada celda se obtiene: N= Números 100 FE = N/n n= Particiones 5 si n = 5 se tiene
una matriz de 5×5 = 25 =n si N = 100 se obtendrán 99 parejas. FE = 99/25=

NOTA: Cuando la pareja de puntos cae en un vértice se coloca a la izq. es por la línea y
abajo. Prueba de series: 0.72484 0.48999 0.50502 0.39528 0.36782 0.90234 0.71890
0.61234 0.86322 0.94134 0.99872 0.27657 0.34565 0.02387 0.67347 0.10987 0.25678
0.25593 0.82345 0.12387 0.05389 0.82474 0.59289 0.36782 0.03991 0.10461 0.93716
0.16894 0.98953 0.73231 1- = 0.95 = 1–0.95 = 0.05 /2= 0.05/2 = 0.025 n=4 elige el
valor de n. Núm. de parejas a formar N = 30–1 = 29 parejas FE = (N-1)/ n2 = (30–1)/ 42
= 1.8125

Paso 1: Ho: ri “independiente H: ri “dependiente. Crear un histograma de dos


dimensiones con M intervalos, clasificando cada pareja de números consecutivos (ri,
ri+1) dentro de las casillas de dicho histograma de frecuencias. El núm. total de pares
ordenados en cada casilla formara la frecuencia observada: FOi.

Paso 2: Calcular la frecuencia esperada en cada casilla FEi de acuerdo con FEi= num/m
de núm. es el número total de parejas ordenadas.
Paso 3. Calcular el error C, con la ecuación siguiente:

Si el valor C es menor o igual al estadístico de tablas x2 con m-1 grados de libertad y


una probabilidad de rechazo, entonces aceptamos que estadísticamente los números son
independientes.

(0.72484 , 0.48999) 1 (0.48999 , 0.50502) 3 2 1 2 (0.50502 , 0.39528 ) 0.75 (0.39528 ,


0.36782 ) (0.36782 , 0.90234 ) 1 1 1 3 (0.90234 , 0.71890) 0.5 (0.71890 , 0.61234) 1 3 3
1 (0.61234 , 0.86322) 0.25 (0.86322 , 0.94134) 2 2 2 2 (0.94134 , 0.99872) (0.99872 ,
0.27657) 0 0.25 0.5 0.75 1 (0.27657 , 0.34565) (0.34565 , 0.02387) (0.02387 , 0.67347)
(0.67347 , 0.10987) (0.10987 , 0.25678) (0.25678 , 0.25593) (0.25593 , 0.82345)
(0.82345 , 0.12387) (0.12387 , 0.05389) (0.05389 , 0.82474) (0.82474 , 0.59289)
(0.59289 , 0.36782) (0.36782 , 0.03991) (0.03991 , 0.10461) (0.10461 , 0.93716)
(0.93716 , 0.16894) (0.16894 , 0.98953) (0.98953 , 0.73231

e. Prueba de Kolmogorov-Smirnov

Esta prueba sirve para verificar o negar la hipótesis que un conjunto de


observaciones provienen de una distribución. La estadística D que se utiliza en esta
prueba es una medida de la diferencia máxima observada entre la distribución empírica
y la teórica supuesta. D es una variable aleatoria. Se utiliza esta prueba para verificar o
negar que un conjunto de números pseudoaleatorios tienen una distribución uniforme en
el intervalo cerrado [0,1].

Paso 1: se formula la hipótesis nula, Ho. De que los números provienen de una
distribución uniforme en el intervalo cerrado [0,1].

Paso 2: Se selecciona una muestra de tamaño n de números pseudoaleatorios generados


n = 1000. Sea Fn(x), de la siguiente manera.

Paso 3: Calcule la función de distribución acumulada empírica fn(x) de la siguiente


manera. -Ordene los valores de la secuencia, tal que para toda i. -Haga Fn(0)

Se evalúa la estadística de Kolmogorov-smirnov, de a partir de la consulta de la tabla de


límites de aceptación para la prueba de kolmogorov- Smirnov, para un tamaño de
muestra n y un determinado nivel de riesgo alfa, si D es menor o igual a este número se
acepta Ho, de otra manera se rechaza. Ejemplo:

De una tabla de número aleatorios se eligen los siguientes 50 (divididos entre 100 Para
que su valor oscile entre 0 y 1. 0.10 0.37 0.08 0.99 0.12 0.66 0.31 0.85 0.63 0.73 0.32
0.04 0.68 0.02 0.99 0.74 0.10 0.77 0.32 0.42 0.76 0.64 0.19 0.09 0.80 0.34 0.45 0.02
0.05 0.03 0.13 0.74 0.09 0.70 0.36 0.76 0.82 0.65 0.74 0.64 0.34 0.24 0.23 0.38 0.64
0.36 0.35 0.68 0.90 0.35

Se desea probar la hipótesis Ho: Provienen de una distribución uniforme en [0,1], a un


nivel de significancia del 90%

Paso 2. Se arregla la tabla anterior para que se cumpla la condición para toda i. 1 0.02 2
0.02 3 0.03 4 0.04 5 0.05 6 0.08 7 0.09 8 0.10 9 0.10 10 0.10 11 0.12 12 0.13 13 0.19 14
0.23 15 0.24 16 0.26 17 0.32 18 0.34 19 0.34 20 0.35 21 0.35 22 0.36 23 0.36 24 0.37
25 0.38 26 0.42 27 0.45 28 0.63 29 0.64 30 0.64 31 0.64 32 0.65 33 0.66 34 0.68 35
0.68 36 0.70 37 0.70 38 0.73 39 0.74 40 0.74 41 0.74 42 0.76 43 0.80 44 0.82 45 0.85
46 0.90 47 0.94 48 0.97 49 0.99 50 0.99

Paso 3 Se construye Fn(xi) para toda i siendo n = 50/100 = 0.5

Fn(0.00) = 0.00 Fn(0.02) = 0.04 Fn(0.0.3) = 0.03 Fn(0.04) = 0.08 Fn(0.05) = 0.10
Fn(0.08) = 0.12 Fn(0.09) = 0.16 Fn(0.10) = 0.20 Fn(0.12) = 0.22 Fn(0.13) = 0.24
Fn(0.19) = 0.26 Fn(0.23) = 0.28 Fn(0.24) = 0.30 Fn(0.31) = 0.32 Fn(0.32) = 0.34
Fn(0.34) = 0.38 Fn(0.35) = 0.42 Fn(0.36) = 0.43 Fn(0.37) = 0.48 Fn(0.38) = 0.50
Fn(0.42) = 0.52 Fn(0.45) = 0.54 Fn(0.63) = 0.56 Fn(0.64) = 0.62 Fn(0.65) = 0.64
Fn(0.66) = 0.66 Fn(0.68) = 0.70 Fn(0.70) = 0.74 Fn(0.73) = 0.76 Fn(0.74) = 0.82
Fn(0.77) = 0.84 Fn(0.80) = 0.86 Fn(0.82) = 0.88 Fn(0.85) = 0.90 Fn(0.90) = 0.92
Fn(0.94) = 0.96 Fn(0.97) = 0.98 Fn(0.99) = 0.100 Paso 4: D = MAX [Fn(xi)-xi] D =
[0.00 - 0.00] = 0 [0.04 - 0.02] = 0.02 [0.06 - 0.03] = 0.03 [0.08 - 0.04] = 0.04 D = 0.12;

Que ocurre para Fn(0.38)

Paso 5: Para un nivel de significancia del 90% y una muestra de 50 números se tiene de
la tabla, un valor de 0.170 como D < 0.170 se acepta Ho: Los 50 números si provienen
de una distribución uniforme en el intervalo [0,1].

f. Prueba de Poker

Esta prueba examina en forma individual los dígitos del número pseudoaleatorio
generado. La forma como esta prueba se realiza es tomando 5 dígitos a la vez y
clasificándolos como: Par, dos pares, tercia, póker quintilla full y todos diferentes. Las
probabilidades para cada una de las manos del póker diferentes se muestran enseguida:

Todos diferentes = 0.3024 Un par = 0.504 Dos pares = 0.108 Tercia = 0.072 Full =
0.009 Quintilla = 0.0001

Con las probabilidades anteriores y con el número de números pseudoaleatorios


generados, se puede calcular la frecuencia esperada de cada posible resultado, la cual al
compararse con la frecuencia observada, produce el estadístico:

Si, Entonces los números pasan la prueba. i Pi FO FE Todos diferentes


0.302429(0.3024)=8.7696 (8.7696–3)2/8.7696=3.7958 Un par 0.504 Dos pares 0.108
Tercia 0.072 Full 0.009 Quintilla 0.0001

55787 dos pares 33333 Quintilla 16543 Todos diferentes 17145 Un par 51575 Tercia
44343 Full 11171 Póker Ho: Los N. A. son independientes con Si se acepta Ho.

g. Prueba de corrida

Una corrida se define como un conjunto de números que aparecen ordenados en forma
monotonicamente creciente o decreciente: por ejemplo 03, 23, 57, 92, 99 contienen una
sola corrida, mientras que 03, 99, 23, 92, 27 contiene (03,99), (223,92), (57) si se utiliza
el signo + para identificar que el número que aparece a la derecha de otro es mayor, o -
si es menor, se tiene que: 30, 23, 57, 92, 99 +, +, +, +, +, mientras que 03, 99, 23, 92, 57
+, -, +, -

Esta prueba se basa en el supuesto que el número de corridas es una variable aleatoria.
Si una secuencia tiene más de 20 números, el número de corridas que es una variable
aleatoria distribuida normalmente con media y varianza conocida. La prueba se realiza
de la siguiente manera:

Paso 1.- Se formula la hipótesis Ho: La secuencia de números es aleatoria.

Paso 2.- Se selecciona una muestra de tamaño n (n>20).

Paso 3.- Se definen con los signos +, - las posibles corridas.

Paso 4.- Se define la estadística r como el número de corridas.

Paso 5.- si n>20 y Ho es verdadera, entonces r se aproxima a una distribución normal


con media:

Paso 6.- Se acepta ho, a un nivel de riesgo, si donde z (*) esta tabulada en la distribución
normal.

Ejemplo: Se tiene la siguiente secuencia de números pseudoaleatorios: 10 37 08 99 12


66 31 85 63 73 32 04 68 02 99 74 10 77 32 42 76 64 19 09 80 34 45 02 05 03 13 74 09
70 36 76 82 64 74 64 34 24 23 28 64 36 35 68 90 35 si r = 35

De tablas: Z (0.68) = 0.7517 Por lo que para el nivel de significancia por ejemplo 10%

Se afirma la Hipótesis Ho: La secuencia de números es aleatoria

Prueba de las corridas arriba y abajo del promedio En esta versión de la prueba de las
corridas, una secuencia de números pseudoaleatorios es generada. En seguida, una
secuencia binaria es obtenida, en la cual es 0 si Ui es menor a 0.5 y 1 si es mayor. Una
vez obtenida la secuencia binaria, el siguiente paso de la cantidad de veces que una
misma longitud de corridas se repite (frecuencia observada de la corrida de la longitud
i). Una sucesión de i ceros (unos) enmarcada por unos (ceros) en los extremos,
representa una corrida de longitud i. El Número total esperado de corridas y el número
esperado para cada tamaño de corrida se obtienen con las siguientes expresiones:

Estas frecuencias esperadas son comparadas con las observadas a través de la


distribución Chi-cuadrada y una decisión sobre la aleatoriedad de los números
pseudoaleatorios generados es tomada. Prueba de corridas arriba y abajo del promedio.

0.65 1 0.55 1 0.91 1 0.25 0 i F0i 0.65 1 0.02 0 0 0.41 0 1 0.31 0 0.40 0 0.08 0 0.69 1
0.46 0
Ho: La secuencia de N. A. es aleatoria con M = 0.5 0.80 1 y 0.83 1 0.27 0 i FOi FEi 0 8
9 ( 9–8)2/9= 0.1111 1 7 4.25 (4.25–7)2 = 1.7794 15

La secuencia de No. es aleatoria con M= 0.5 y alfa =5%. Se acepta Ho. 5.8.2 Prueba
de corridas arriba y abajo. Se genera una secuencia de números igual que en el inciso
anterior y luego se obtienen una secuencia binaria, en la cual el i-ésimo término es cero
si Uii< Ui+1 y 1 al contrario. Una vez obtenida la secuencia binaria, se sigue el mismo
procedimiento descrito anteriormente y se obtienen la frecuencia observada para cada
tamaño de corrida. El número total esperado para cada tamaño de corrida se obtiene con
las siguientes expresiones:

Finalmente, el estadístico Chi-cuadrada se determina de acuerdo a la siguiente


expresión:

Donde n es el número de términos de la ecuación anterior. Es importante señalar que el


cálculo del estadístico Chi-cuadrada, la frecuencia esperada para cada tamaño de corrida
debe ser igual o mayor a 5. Si las frecuencias esperadas para corridas de tamaño grande
son menores que 5, tales frecuencias se deben agrupar con las adyacentes de tal modo
que la frecuencia esperada de los tamaños de corrida sea al menos 5.

Si entonces los números pasan la prueba. Pruebas de corridas arriba y abajo.

i 1 0.84 1 2 0.53 1 3 0.43 0 4 0.45 1 5 0.74 0 Ho: La sec. De No, es aleatoria con 6 0.66
0 7 0.33 1 8 0.85 0 9 0.37 1 FE 20−1= 2/20! 10 0.69 0 11 0.10 1 12 0.76 0 13 0.68 0 14
0.60 1 15 0.97 0 16 0.03 1 17 0.72 0 18 0.17 1 19 0.29 0 20 0.16 1

i FOi FEi 0 10 8 ( 8–10)2/8= 0.1111 1 10 8. 9166 (8.9166–10)2 /8.9166=0.1316 10

Se acepta Ho. Los No. son aleatorios

5. Generación de números aleatorios

Un Generador de números aleatorios es un componente o funcionalidad que crea


números o símbolos para un programa software en una forma que carezca de un patrón
evidente, y que así parezcan ser números aleatorios.

La mayor parte de los generadores de números aleatorios son, en realidad,


pseudoaleatorios: se calcula (o introduce internamente) un valor X0, que llamaremos
semilla, y, a partir de él, se van generando X1, X2, X3,...

Siempre que se parta de la misma semilla, se obtendrá la misma secuencia de valores.

El algoritmo básico es el método congruencial, que genera valores en el intervalo [0,1),


mediante el siguiente esquema: Se fijan A, B, enteros positivos (deben tener ciertas
propiedades para obtener un buen generador), y, a partir de una semilla X0 en el
conjunto 0,1,...,(N-1), se generan X1 = A*X0+B (mod N) X2 = A*X1+B (mod N) X3 =
A*X2+B (mod N) ... X(k+1) = A*Xk+B (mod N) ...
Donde A*X+B (mod N) es el resto de la división entera de A*X+B entre N. Por
ejemplo, 16 (mod 7) es 2.

A partir del método congruencial, es posible tomar valores pseudoaleatorios en el


intervalo [0,1) como sigue: Se toma N, entero, muy grande, se toman A, B adecuados, y
una semilla X0 en 0,1,..,(N-1). A partir de ella, se generan X1, X2, X3,... por el método
congruencial, y a partir de ellos, Y0, Y1, Y2, Y3,... mediante la fórmula Yk = Xk /N

El método base es el método congruencial de generación de números en el conjunto


{1, 2, 3,..., (N-1)}

Para ello, se toman A, B enteros adecuados, se indica un valor inicial (semilla) X0 en el


conjunto {1, 2, 3,..., (N-1)}, y se aplica el esquema recursivo

, , ,...,

Donde por X(modN) indica el resto de la división entera de X entre N. Por ejemplo,
12(mod7) = 5

Si se conoce cómo generar valores en {1, 2, 3,..., (N-1)}es posible generar valores en el
intervalo [0,1), como sigue: Se toma N, muy grande, entero, se toma una semilla
, y se construye la secuencia obtenida
aplicando la expresión Yk = Xk / N

a. Distribuidos uniformemente

Un problema básico que nos encontramos habitualmente es el de obtener secuencias


de números uniformemente distribuidos en un intervalo [0,1]. Las diferentes
posibilidades para resolver dicho problema son:

i) Buscar en tablas de números aleatorios publicadas (libros, internet,..);

ii) Observar un proceso físico tal como la desintegración radiactiva, el ruido eléctrico,...;

iii) Los lenguajes de programación y las hojas electrónicas incluyen una función para
generarlos

iv) Mediante algoritmos de generación de números aleatorios

Las principales ventajas de los generadores de números aleatorios son:

- Rapidez
- Comodidad
- Reproducibilidad
- Portabilidad
La desventaja fundamental: Las secuencias obtenidas no son realmente aleatorias, ya
que se obtienen con operaciones deterministas. Solo podemos obtener secuencias
pseudo-aleatorias, que a su vez satisfacen algunos criterios de aleatoriedad adecuados.

Los números generados deben cumplir ciertas características para que sean válidos.
Dichas características son:

1. Uniformemente distribuidos.

2. Estadísticamente independientes.

3. Su media debe ser estadísticamente igual a 1/2.

4. Su varianza debe ser estadísticamente igual a 1/12.

5. Su periodo o ciclo de vida debe ser largo.

6. Deben ser generados a través de un método rápido.

7. Generados a través de un método que no requiera mucha capacidad de


almacenamiento de la computadora.

Normalmente se utilizan números enteros, ya que su aritmética es exacta y rápida. Se


generan enteros Ni entre 0 y M-1, y xi =Ni/M da valores reales en el intervalo [0,1).
En general los algoritmos utilizan relaciones de recurrencia del tipo

En el caso de recurrencia simple, o bien

Para el caso de una recurrencia de orden k. Se necesitará dar un valor inicial para
comenzar el algoritmo (k valores para recurrencias de orden k ).

Generadores de congruencia lineal (GCL)

Estos generadores son los más utilizados y los más conocidos. Se basan en la relación
de recurrencia

Donde es el multiplicador y el módulo.

- Hay valores posibles de Ni, entre 0 i m-1.

- La secuencia es periódica: cuando vuelve a aparecer un número por segunda vez, la


secuencia se vuelve a repetir. El periodo depende de los valores de a, c y m, así como
del valor inicial; nótese que el máximo posible es m.

Recordemos que lo que nos interesa para trabajar con un buen generador de números
aleatorios es que la distribución de los números obtenidos tiene que ser uniforme, no
deben de haber correlaciones entre los términos de la secuencia, el periodo debe ser lo
más largo posible, y el algoritmo debe ser de ejecución rápida.

Mejora de los generadores de congruencia lineal

Las limitaciones más importantes de los generadores son su periodicidad


(normalmente el periodo no suele ser más grande de 232 =4x109) y la posible presencia
de correlaciones entre términos consecutivos de la secuencia. Una manera sencilla de
suprimir éstas limitaciones es desordenar un poco la secuencia mediante el
siguiente procedimiento:

Se parte de un generador que da enteros aleatorios entre 0 y m-1, y en primer lugar


se genera con el GCL un vector que contiene una lista de enteros aleatorios jn, así
como un entero aleatorio y. Se determina el índice k= [y*N/M], entre 0 y N-1.

El elemento jk de la lista se da como un nuevo nombre aleatorio, y se reasigna a la


variable y el valor jk. El valor de jk se renueva con el GCL, y se vuelve a repetir los
pasos desde la determinación del índice .

Generadores de desplazamiento de bits

En estos generadores cada nuevo número entero aleatorio Ni, se obtiene manipulando
los bits del número anterior, Ni-1. En lenguaje C, esto se puede hacer utilizando
operadores sobre bits, >>,<<, , , & .

Generadores de Fibonacci

Las grandes ventajas de estos generadores es que son generadores muy rápidos que
tienen un periodo muy largo. La fomentación teórica en la que se basan es diferente a la
de los GCL. Los generadores de Fibonacci se basan en una recurrencia del tipo:

Donde r<s son enteros dados y denota alguna de las operaciones +, -, x, . Este
tipo de generador precisa iniciar (con otro generador) y mantener una lista de los
últimos números generados.

Antes de aceptar un nuevo generador hace falta verificar que satisface una serie de
pruebas, lo que llamaremos pruebas de aleatoriedad.

Por ejemplo: sea x =2, a = 3, b = 5 y m = 7

Lo primero que se hace es calcular el valor xo, reemplazando los valores en la


congruencia obtenemos

De modo que xo = 4. A partir de acá, se pueden generar todos los demás números.
Valor Número generado xn
0 4
1 3
2 0
3 5
4 6
5 2
6 4
7 3
8 0

Como se observa, es un método bastante económico y sencillo de recrear en código.


Una observación que se puede hacer, es que el valor que se genera en cada número
aleatorio será menor al del módulo, en este caso el valor m. De modo que no es
conveniente tomar un valor pequeño, como en nuestro ejemplo, pues los números
generados irán desde 0 hasta 6, conviene más tomar un valor grande.

Una de las principales limitaciones de este método es qué, al ser un módulo, los
valores se repiten. Si observamos la tabla anterior vemos que el valor x6 es el mismo x0,
de hecho, a partir de allí se repiten todos los números. Es decir, sin importar los valores
que tomemos, eventualmente se empezarán a repetir los números que se generan.

Otra desventaja de este método, es que la semilla siempre genera los mismos
números aleatorios. Dicho de otra forma,

Dada la semilla x, este método genera siempre los mismos números aleatorios.

Este hecho quita la sensación de algo aleatorio, en qué sentido: ¿Cómo se le puede
llamar aleatorio a un método que genera siempre los mismos números? Existen
programas que sub-sanan este detalle cambiando la semilla constantemente.

Si nos adentramos un poco más, vemos que puede ocurrir otro problema, y es que
dicho periodo se repita lo más pronto posible. Por ejemplo, si tomamos como semilla
x = 2, a = 3, b = 5 y m = 12, obtenemos la siguiente sucesión de números aleatorios.

Valor Número generado xn


0 11
1 2
2 11
3 2
4 11
5 2
6 11
7 2
8 11

El cual, sin lugar a dudas, no es una sucesión que nos convenga como para obtener
números aleatorios. Esto da buenos argumentos para deducir que la selección de los
valores x, a, b y m no pueden hacerse sin cuidado alguno.

El siguiente teorema permite saber si el periodo del generador es el más grande


posible.

Teorema (Hull – Dobell). Un generador de congruencia lineal tiene periodo máximo


si:

1. Los números m y b son primos relativos.


2. Si q es un número primo que divide a m entonces q divide a a-1.
3. Si cuatro divide a m, entonces cuatro divide a a-1.

Generalmente, los números que se utilizan para estos generadores son a = 75, b = 0 y
m = 2r -1, donde r es cierta cantidad según la capacidad de procesamiento que se
disponga. Este fue propuesto por Park y Miller en 1988, la única condición es que la
semilla sea distinto de cero.

Otra variación para este tipo de generadores, es este

Generador. Dados los enteros positivos a0, a1,…,ak , b y m, dadas la semillas x0, x1,
…,xk , se define el valor xk+1 como:
.

Para todo n>k se generan de manera recursiva.

Es decir, en este caso, cada valor depende de los k valores anteriores.

Pruebas de aleatoriedad

Éstas consisten básicamente en realizar dos tipos de pruebas, empíricas y teóricas.


Si los generadores superan estas pruebas, podremos asegurar que estamos ante un
generador de números aleatorios bastante competente.
Pruebas empíricas (sobre la muestra de la secuencia)

- Test de uniformidad: hace falta que los valores estén uniformemente distribuidos en
[0, 1]. Se puede realizar un test X2. Alternativamente, podemos estimar los momentos

de orden y comprobar que se aproximan a sus correspondientes


valores teóricos, 1/(k+1).

- Test serial: se generan parejas de valores (x1, x2), y se comprueba si se distribuyen


uniformemente en el cuadrado [0, 1] x [0, 1].

- Test de correlaciones: se determina la correlación entre números separados lugares

en la secuencia, . Su valor tendría que acercarse a 1/4.

Pruebas teóricas (sobre toda la secuencia): La sencillez de los generadores de


congruencia lineal permiten demostrar propiedades importantes:
- Para determinar valores de a, c, m se obtienen secuencias de periodo máximo . Por
ejemplo, si es una potencia de 2, bastará con que sea impar y sea igual a un
múltiple de 4 más 1.

- Test espectral: si se forman vectores con valores consecutivos,

Estos forman hiperplanos paralelos en el espacio k-dimensional. La separación dk entre


los planos tiene que ser la mínima posible.

b. Distribuidos no uniformemente

El problema a tratar será el de obtener una secuencia con densidad de probabilidad


dada (y), definida en el intervalo (ymin, ymax) a partir de una secuencia de números con
distribución uniforme U (0, 1).

Para resolver este problema utilizaremos el método del cambio de variable. Que
concretamente consistirá en buscar una transformación y=f(x) para obtener la
distribución deseada. Si la densidad de probabilidad de es p(x), tenemos:

Si la integración de esta ecuación resulta ser

Si sabemos calcular la integral, obtenemos una relación del tipo X = g(Y), que se tiene
que invertir para poder obtener Y=f(X).
Ejemplos:

Distribución exponencial. Para obtener con distribución

Entonces nos queda la ecuación

Por lo tanto, el cambio adecuado será

Distribución normal. Para obtener Y pertenece a N(0,1), nos queda la siguiente


ecuación

La integral no se puede resolver analíticamente, y menos aun invertir la relación para


obtener Y = f(X) . La alternativa es aplicar el algoritmo de Box-Muller. Que permite
obtener 2 valores independientes x1, x2 con distribución N (0,1) si x1, x2 son las
coordenadas de un punto del plano, la densidad de probabilidad de sus coordenadas
polares es

Por lo tanto, i r tiene la densidad de probabilidad . Se pueden

obtener a partir de 2 números con las transformaciones

. Por lo tanto x1, x2 se pueden obtener con las


transformaciones

Método de aceptación-rechazo: Es un método sencillo y general, aunque en ocasiones


no muy eficiente.

Sea p(x) definida en un intervalo finito, (a, b), y M una cota superior de p(x). Se

generan dos valores aleatorios y Entonces:


De esta manera el valor aparece con una densidad de probabilidad p(x), aunque no
se aprovechan todos los valores que obtenemos en la realización del método. De todos
modos, este es el único método disponible cuando la distribución de probabilidades es
complicada. De hecho es la base del algoritmo de Metrópolis, posiblemente el más
utilizado en física computacional.

Bibliografía

1. GORDON G. Simulación de Sistemas. Editorial Diana. Primera Edición.


2. ALBALADEJO García Manuel. La simulación. Plaza Edición: Madrid 2005.
3. Lo fascinante de la teoría de números. Recuperado el 26 de diciembre de 2017
en: https://sselbergg.wordpress.com/2013/11/23/numeros-aleatorios-y-teoria-de-
numeros/
4. Generador de números pseudoaleatorios. Recuperado el 26 de diciembre de
2017 en:
https://es.wikipedia.org/wiki/Generador_de_n%C3%BAmeros_pseudoaleatorios
5. Función De Densidad De Probabilidad. Recuperado el 28 de diciembre de 2017
en: http://mitecnologico.com/Main/FuncionDeDensidadDeProbabilidad
6. Densidad de probabilidad. Recuperado el 28 de diciembre de 2017 en:
http://es.wikipedia.org/wiki/Funci%C3%B3n_de_densidad_de_probabilidad
7. http://www.mitecnologico.com/Main/PruebasDeAleatoriedad
8. http://www.lawebdefisica.com/apuntsmat/num_aleatorios/

Vous aimerez peut-être aussi