反复调用 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 位转换为浮点,并返回该值。