Simulación en Fortran
- Al lanzar una moneda existen sólo dos posibilidades: cara o sello; entonces cada posible resultado tiene una probabilidad de ser cierto de 0.5.
- Ahora, se genera un número aleatorio cuyo valor varíe en el intervalo de [0;1>
- A cada posible resultado se le asigna un subintervalo dentro del intervalo [0;1>
- Si el número aleatorio es, por ejemplo, 0.378, el resultado cae dentro del intervalo cara, esto quiere decir que, el resultado es cara.
La cuestión aquí es como simular en fortran, bueno, para eso lo que tenemos que realizar es la generación de números aleatorios mediante la subrutina RANDOM_NUMBER (R), esta subrutina puede ser usada para simular diferentes eventos aleatorios, Random_Number genera números pseudo aleatorios distribuidos uniformemente en el rango de:
0≤R<1>
El problema es que una cmputadora no puede, realmente, generar números aleatorios, pero estos son igualmente impredecibles. R puede ser un escalar o una matriz, pero debe ser real. Random_Number arrojará siempre la misma secuencia de números aleatorios. Para producir diferentes secuencias cada vez que se utilice el programa, el generador puede ser iniciado de diferentes maneras.
La subrutina SYSTEM_CLOCK retorna el valor del reloj del sistema, su argumento debe ser entero.
RANDOM_SEED es la subrutina que permite inicializar a RANDOM_NUMBER. Tiene unos argumentos mudos, en el ejemplo PUT se usa para reiniciar el valor de la semilla. Otro argumento mudo es GET que se usa para tomar el valor actual de la semilla. Esto nos ayuda sobre todo dentro de un bucle.
Luego, como ejemplo tenemos:
INTEGER Hora
REAL, DIMENSION(10) :: R
INTEGER, DIMENSION(1) :: semilla
CALL SYSTEM_CLOCK( Hora )
semilla = Hora
CALL RANDOM_SEED( PUT = semilla )
CALL RANDOM_NUMBER( R )
Con esto creo que ya puedes jugar a simular cualquier evento, si eres bueno programando puedes simular cualquier evento, juego de cartas, lance de un dado y de una moneda que es más fácil, pero la cosa es que empieces a simular por ejemplo, el movimiento de un electrón, usando la ecuación de Shrodinger, decamiento radioactivo, crecimiento de cristales, nucleación, etc.
Si tienes las herramientas a la mano, pues empieza a construir.
Acá el link del libro Fortran for Scientific and Ingeneering que está en DJVU, puede servirte o en todo caso revisa el manual del mismo título que viene en el Fortran Power Statio 4.0