Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad


Explicación acerca de números aleatorios en Python, Apuntes de Física

Explicación acerca de números aleatorios en Python

Tipo: Apuntes

2018/2019

Subido el 19/03/2023

jesus-leonardo-pedrozo-montenegro
jesus-leonardo-pedrozo-montenegro 🇨🇴

6 documentos

1 / 12

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
Capítulo 1
Números Aleatorios
1.1. Números alaeatorios
Los historia de los números aleatorios nace en los años cuarenta con
la creación del método conocido como Simulación de Monte Carlo por
Metropolis y Ulam.
Inicialmente, en los años cuarenta la simulación de procesos estocásti-
cos estuvo restringida al proyecto secreto del departamento de defensa
de los estados unidos.
Más tarde Lehmer propuso el generador lineal de congruencia, el cual
se ha convertido en método más usado en la actualidad. Este es un
generador de números aleatorios que es utilizado por otros generadores
para procidir buenos números aleatorios.
Los números aleatorios son aquellos que pueden ser generados a
partir de fuentes de aleatoriedad, las cuales son de naturalza física
(dados, ruletas, mecanísmos electrónicos o mecánicos, etc.)
Los números pseudo aleatorios son aquellos que tienen un com-
portamiento similar a la naturaleza aleatoria, pero están ceñidos a un
1
pf3
pf4
pf5
pf8
pf9
pfa

Vista previa parcial del texto

¡Descarga Explicación acerca de números aleatorios en Python y más Apuntes en PDF de Física solo en Docsity!

Capítulo 1

Números Aleatorios

1.1. Números alaeatorios

Los historia de los números aleatorios nace en los años cuarenta con la creación del método conocido como Simulación de Monte Carlo por Metropolis y Ulam.

Inicialmente, en los años cuarenta la simulación de procesos estocásti- cos estuvo restringida al proyecto secreto del departamento de defensa de los estados unidos.

Más tarde Lehmer propuso el generador lineal de congruencia, el cual se ha convertido en método más usado en la actualidad. Este es un generador de números aleatorios que es utilizado por otros generadores para procidir buenos números aleatorios.

Los números aleatorios son aquellos que pueden ser generados a partir de fuentes de aleatoriedad, las cuales son de naturalza física (dados, ruletas, mecanísmos electrónicos o mecánicos, etc.)

Los números pseudo aleatorios son aquellos que tienen un com- portamiento similar a la naturaleza aleatoria, pero están ceñidos a un

2 CAPÍTULO 1. NÚMEROS ALEATORIOS

patrón de naturaleza matemática, que hace que su comportamiento sea determinístico.

1.1.1. Propiedades de números aleatorios

Secuencias no correlacionadas. Esto significa que en una sucesión de números aleatorios, una subsecuencia de números aleatorios no debe estar relacionada con ningúna otra.

Independencia estadística y equiprobabilidad. Lo cual implica que la probabilidad de aparición de un número en una sucesión de números aleatorios debe ser la misma para cada uno de los elemen- tos. Además, la aparición de un elemento en una serie no excluye la aparición de cualquier otro. Período máximo. Los generadores de números aleatorios son cí- clicos, por lo cual es deseable que cada uno de los elementos aparezca solo una vez en la secuencia antes que empiece a repetirse. Lo que se requiere es que el período del ciclo sea largo.

Uniformidad. Los números aleatorios pueden ser modelados median- te la función de densidad de probabilidad de la variable aleatoria uni- forme estandar.

Eficiencia. La cual se mide en términos de utilización de la CPU

1.2. Generador de congruencia lineal

Los generadores de números aleatorios son rutinas para generar una secuencia de números aleatorios.

Lo primero que se quiere es que los números aleatorios que se generen tengan un gran período.

Al hacer las pruebas estadísticas, estos números deben tener las pro- piedades estadísticas de los números aleatorios.

4 CAPÍTULO 1. NÚMEROS ALEATORIOS

Ejemplo. m = 10, a = c = x o = 7.

x 1 = (7 · 7 + 7) m´od 10 = 6 x 2 = (7 · 6 + 7) m´od 10 = 9 x 3 = (7 · 9 + 7) m´od 10 = 0 x 4 = 7 x 5 = 6

x ¯ = 7, 6 , 9 , 0 , 7 , 6 , 9 , 0 , .... Se llega a un ciclo que tiene un período muy corto, donde no están todos los números del 0 al 9. Este ejemplo mues- tra una de las propiedades de los generadores lineales congruentes que es que éstos llegan a un ciclo.

O sea que este algoritmo tiene un período de 4. y los números aleatorios en si se detrminan entre [0, 1], o sea, que se deben dividir entre el módulo U¯ = ¯x/m = 0, 7 , 0 , 6 , 0 , 9 , 0 , ....

Un ejemplo de una serie que se genera con un período completo es a = 5, c = 7, m = 8 y x o = 5.

Los buenos generadores son los que generan un período completo.

1.2.1. Reglas para escoger a , c y m

El número máximo del módulo debe se obtiene de la forma m = P e , donde P es la base del sistema numérico que utiliza el computador y e es el número de bits del computador. Generalmente se utiliza base 2 o base 10.

Para escoger al multiplicador a se toman las siguientes dos reglas:

a = 1 + M CM (P 1 , P 1 , ..P 1 , P k − 1 , P k , 4) × t (1.5)

si 4 divide al módulo, siendo t un número entero positivo y P 1 , ..P 1 , P k − 1 , P k son números primos de m. Ó

a = 1 + M CM (P 1 , P 1 , ..P 1 , P k − 1 , P k ) × t (1.6)

1.2. GENERADOR DE CONGRUENCIA LINEAL 5

si 4 no divide al módulo.

La semilla es un número entre 0 y menor que m 0 ≤ x o < m

Para escoger c se debe tener en cuenta que debe ser un entero positivo menor que m y dbe ser primo relativo con m, o sea que su máximo común divisor entre c y m MCD(c, m) = 1 debe ser 1 , no existe otro numero que los pueda dividir a los dos simutaneamente.

La función de Euler permite determinar el número de valores que puede tomar c

ϕ(m) =

∏^ k

i =

P (^) ie i −^1 (P i − 1) (1.7)

Ejemplo. Calcular los valores de a, c y x o para un módulo de m = 48 que permita obtener un período completo.

Para encontrar a vemos si 4 divide a m = 48. En este caso si divide al módulo, entonces se encuentran los factores primos de m:

48 = 2^4 · 31 P e^1 · P e^2 (1.8)

donde P 1 = 2, e 1 = 4 y P 2 = 3, e 2 = 1, así que a puede tomar los valores a = 1 + M CM (2, 3 , 4) × t = 1 + 12 × t (1.9)

tal que a = 1, 13 , 25 , 37.

Los posibles valores de la semilla son x o = 0, 1 , 2 , 3 , 4 , .., 47.

Para encontrar el número de términos que puede tener c se tiene

ϕ(48) = P 1 e 1 −^1 (P 1 −1)P 2 e 2 −^1 (P 2 −1) = 2^3 (2−1)· 30 (3−1) = 16 (1.10)

o sea que c puede tomar 16 valores.

c además debe ser primo relativo de m = 48, entonces c puede tomar los valores:

c = 1, 5 , 7 , 11 , 13 , 17 , 19 , 23 , 25 , 29 , 31 , 37 , 39 , 41 , 43 , 47. (1.11)

1.2. GENERADOR DE CONGRUENCIA LINEAL 7

import random random.random()

Cada vez que se importa random, la secuencia subsiguiente de llama- das random.random() producirá números diferentes.

Para fines de depuración, es útil obtener la misma secuencia de núme- ros aleatorios cada vez que ejecutamos el programa. Esta funcionali- dad se obtiene configurando una semilla antes de que comencemos a generar números.

Con un valor dado de la semilla, se genera una y solo una secuencia de números.

random.seed()

La función

random.uniform(a,b)

genera números aleatorios uniformes en el intervalo medio abierto [a, b). de igual manera, la función

random.normalvariate(a,b)

genera números aleatorios de la distribución normal en el intervalo medio abierto [a, b).

8 CAPÍTULO 1. NÚMEROS ALEATORIOS

1.3. Método Monte Carlo

Se desea calcular un integral numérica del tipo: ∫ (^) b

a

f (x)dx (1.16)

donde x es una variable aleatoria con distribución uniforme continua en [a, b]. Si x es una variable aleatoria, entonces f (x) también será una variable aleatoria. Se sabe que el valor esperado de una función f (x) por definición será:

E(f (x)) =

∫ (^) b

a

f (x)h(x)dx (1.17)

donde h(x) es la función de densidad de probabilidad. Se define una densidad de probabilidad en el intervalo [a, b] con una función no ne- gativa en ese intervalo que está normalizada, ∫ (^) b

a

h(x)dx = 1 (1.18)

La varianza de f tambien conocida como dispersión se determina de la forma: 〈∆f 〉^2 = 〈f 2 〉 h − 〈f 〉^2 h (1.19)

donde 〈∆f 〉 se llama la desviación estándar de f y es una medida de cuánto se desvıa f de su promedio. Si se asume la función de densidad constante en el intervalo de integración se tiene:

h(x) = const =

b − a

y el valor esperado de f (x) por definición será:

E(f (x)) =

∫ (^) b

a

f (x)h(x)dx =

b − a

∫ (^) b

a

f (x)dx (1.21)

10 CAPÍTULO 1. NÚMEROS ALEATORIOS

de donde se obtiene que

y =

x − a b − a

, x = (b − a)y + a, dx = (b − a)dy (1.27)

Finalmente, se obtiene: ∫ (^) b

a

f (x)dx = (b − a)

∫ (^1)

0

f (a + (b − a)y)dy (1.28)

Si los límites son ∫ (^) ∞

0

f (x)dx (1.29)

Se utiliza la siguiente función:

y =

x + 1

y se obtiene ∫ (^) ∞

0

f (x)dx =

∫ (^1)

0

y^2

f

( 1 y

) dy (1.31)

1.3. MÉTODO MONTE CARLO 11

1.3.1. Forma alternativa del método Monte Carlo

Muchas veces dividir el espacio en inteervalos para resolver de forma numérica un integral resulta no conveniente desde el punto de vista computacional.

Una alternativa es escoger N puntos aleatoriamente distribuidos en un rectángulo formado por [a, b] × [0, f max ]. De esos N puntos vamos a escoger N ′^ que se encuentran bajo la curva y i < f (x i ).

Lo anterior se puede representar geometricamente como sigue:

∫ (^) b

a

f (x)dx = (b − a)f max

N ′

N

Ejemplo. Los mesones P i son partículas inestables con una masa en reposo de 140 MeV/c^2. Su tiempo de vida en el sistema en reposo es 2 , 6 −^8 s. Si su energía cinética es de 200 MeV, escribe un programa que simule cuántos piones sobrevivirán después de haber recorrido 20 m. Comience con una muestra inicial de 108 piones. Suponga que los piones son monoenergéticos.