Un resultado conocido de teoría de los números pone de manifiesto
que la probabilidad que dos números tomados aleatoriamente sean primos
entre ellos es de
. Para intentar
encontrar este resultado, vamos a:
para prueba
# Inicializamos la variable contador a 0
haz "contador 0
repite 1000 [
si (mcd azar 1000000 azar 1000000) = 1
[haz "contador :contador+1]
]
escribe [Frecuencia:]
escribe :contador/1000
fin
Nota: Igual que antes, nos vemos obligados a poner paréntesis en
mcd azar 1000000 azar 1000000
si no, el interprete va a intentar evaluar
. Para evitar
este problema de paréntesis, escribe:
si 1 = mcd azar 1000000 azar 1000000
prueba 0.609 prueba 0.626 prueba 0.597
Se obtienen valores próximos al valor teórico de
. Lo que
es notable es que esta frecuencia es un valor aproximado de
.
Si tenemos en cuenta
, la frecuencia encontrada, se tiene pues:
. Despejando:
Añadimos esta aproximación al programa, y transformamos el final del procedimiento prueba:
para prueba
# Inicializamos la variable contador a 0
haz "contador 0
repite 1000 [
si (mcd azar 1000000 azar 1000000) = 1
[haz "contador :contador+1]
]
# Tras calcular la frecuencia
haz "f :contador/1000
#Mostramos el valor aproximado de pi
escribe frase [Aproximacion de pi:] raizcuadrada (6/:f) fin
fin
que proporciona:
prueba Aproximacion de pi: 3.164916190172819 prueba Aproximacion de pi: 3.1675613357997525 prueba Aproximacion de pi: 3.1008683647302115
Bien, modifiquemos el programa de modo que cuando lo lancemos, podamos indicar el número de pruebas deseadas.
para prueba :repeticiones
# Inicializamos la variable contador a 0
haz "contador 0
repite :repeticiones [
si (mcd azar 1000000 azar 1000000) = 1
[haz "contador :contador+1]
]
# Tras calcular la frecuencia
haz "f :contador/:repeticiones
#Mostramos el valor aproximado de pi
escribe frase [Aproximacion de pi:] raizcuadrada (6/:f)
fin
Probamos con 10000 repeticiones, y obtenemos en las tres primeras
tentativas:
prueba 10000 Aproximacion de pi: 3.1300987144363774 prueba 10000 Aproximacion de pi: 3.1517891481565017 prueba 10000 Aproximacion de pi: 3.1416626832299914No está mal, ¿verdad?
Loïc 2007-10-30