Rnd
 
返回一个随机的 Double 数值,范围在 [0, 1]之间

语法

Declare Function Rnd ( ByVal seed As Single = 1.0 ) As Double

用法

result = Rnd( seed )

参数

seed
可选Single参数。如果seed 的值为零(0.0),则生成的最后一个随机数将被重复。对于任何其他数字,返回一个新的随机数。使用QB兼容算法,负数完全重新生成发生器。没有参数的默认值是返回一个新的随机数。

返回值

返回生成的随机数。

说明

返回[0, 1)范围内的Double类型(即0 <= Rnd < 1),基于随机种子(参见Randomize)。

Rnd可以使用各种不同的算法 - 有关默认和可选算法的详细信息,请参阅Randomize.

每次运行程序时,Rnd将返回相同的数字序列。该序列可以通过再生发生器来改变。

例子

''对[first, last), or {first <= x < last}.
Function rnd_range (first As Double, last As Double) As Double
    Function = Rnd * (last - first) + first
End Function

'' seed the random number generator, so the sequence is not the same each time
Randomize

'' prints a random number in the range [0, 1), or {0 <= x < 1}.
Print Rnd

'' prints a random number in the range [0, 10), or  {0 <= x < 10}.
Print Rnd * 10

'' prints a random integral number in the range [1, 11), or  {1 <= x < 11}.
'' with integers, this is equivalent to [1, 10]或{1 <= n <= 10}范围内的随机数的功能。
Print Int(Rnd * 10) + 1

''打印范围[69, 421), or {69 <= x < 421}.
'' this is equivalent to [69, 420]或{69 <= n <= 420}中的随机整数。
Print Int(rnd_range(69, 421))


方言差异

所使用的默认算法取决于当前正在使用的方言:
    • 使用-lang fb 方言,使用32位Mersenne Twister功能,其粒度为32位。
    • 使用-lang qb 方言,使用了在QB中提供与RND相同输出的功能。粒度为24位。
    • 使用-lang deprecated -lang fblite 方言,可以使用系统中可用的C运行时的功能。Win32中提供的功能具有15位的粒度,在Linux和DOS中为32位。

与QB差别

  • 没有,如果编译在-lang qb 方言。其他方言也可以使用相同的播种和生成算法,通过调用随机化使用适当的参数。
  • 对于非QB兼容算法,如果可选参数小于0,则它与传递参数1的含义相同。

参考