Módulo aleat.h 1.3 para Inform (C) 2000 El Presi (Enrique D. Bosch) [kifcu@confluencia.net] Puede distribuirse libremente bajo licencia GNU LGPL Esto es un módulo para Inform (no necesariamente para informatE, aunque puede usarse conjuntamente) que proporciona números pseudoaleatorios mediante el algoritmo del método de congruencia lineal, con aceso a su semilla y los parámetros críticos del algoritmo. La semilla es lo que determina la secuencia pseudoaleatoria que se va a generar, dadas semillas diferentes se generarán secuencias de números diferentes y para una misma semilla siempre se generará la misma secuencia de números, de ahi que no sean realmente aleatorios sino solo pseudoaleatorios; por eso es recomendable que la semilla inicial se distinta en cada ejecución, siempre que no se quiera tener la misma y única secuencia. Si se quisieran generar números realmente aleatorios se debería recurrir a eventos externos del sistema o al uso de hardware especial, pero este módulo no cubre eso. El módulo puede compilar tanto para la máquina Z como para Glulx. La versión 1.2 corrige un grave bug presente en la versión 1.1 y se puede compilar tanto con Inform 6.21 (o superior) como con Inform 6.15. La versión 1.3 corrige un bug que compilando para Glulx, bajo ciertas condiciones se producía overflow y la función randosem devolvía negativos cuando no debía. También cambia un parámetro (el módulo) bajo Glulx para mejorar la aleatoriedad. Nota: Si se presentan otros problemas de aleatoriedad, se deben cambiar los valores del algoritmo con la función pcriticos. Ya que este módulo se ejecuta sobre Inform, utiliza aritmética entera, no implementa nada de números reales (coma flotante). El módulo se implementa como la clase "generador", asi que en el código debe declararse por lo menos una instancia (objeto) de esa clase, asi se pueden definir distintos objetos generador con semillas y parámetros críticos independientes. Ejemplo de inclusión de alet.h junto con declaración de un objeto generador: include "aleat"; generador aleatorio; Interfaz del módulo (métodos proporcionados): aletorio.randomsem(a,z) Devuelve un número pseudoaleatorio comprendido entre a y z (a>=0, a