反复调用 ran 可生成一个分布均匀的随机数序列。请参见 lcrans(3m)。
r = ran( i ) |
|||
i |
INTEGER*4 |
输入 |
变量或数组元素 |
r |
REAL |
输出 |
变量或数组元素 |
示例:ran:
demo% cat ran1.f * ran1.f -- Generate random numbers. INTEGER*4 i, n real r(10) i = 760013 do n = 1, 10 r(n) = ran ( i ) end do write ( *, "( 5 f11.6 )" ) r end demo% f95 ran1.f demo% a.out 0.222058 0.299851 0.390777 0.607055 0.653188 0.060174 0.149466 0.444353 0.002982 0.976519 demo% |
请注意以下事项:
该范围包括 0.0,但不包括 1.0。
该算法是一种倍增叠合型通用随机数生成器。
通常,在执行调用程序期间,将会设置一次 i 值。
i 的初始值应该是较大的奇整数。
每次调用 RAN 都会获得同一序列的下一个随机数。
要在每次运行程序时获得不同的随机数序列,必须在每次运行时将参数设置为不同的初始值。
RAN 使用该参数存储根据以下算法计算出来的下一个随机数的值:
SEED = 6909 * SEED + 1 (MOD 2**32) |
SEED 包含 32 位数,高 24 位转换为浮点,并返回该值。