种子随机数发生器
语法
用法
Randomize [ seed ][, algorithm ]
参数
说明
设置有助于
Rnd生成随机数的随机种子,并选择要使用的算法。
algorithm 的有效值为:
0 - 当前
语言方言的默认值。这是
-lang fb 方言中的
-lang fb 方言
4-lang qb 方言中的
3和
-lang fblite 方言中的
1.
1 - 使用C运行时库的
rand()功能。这将根据平台给出不同的结果。
2 - 使用快速实现。这在所有平台上应该是稳定的,并提供32位粒度,合理的随机程度。
3 - 使用Mersenne Twister。这应该在所有平台上都是稳定的,提供32位的粒度,并提供高度的随机性。
4 - 使用旨在给出与QBASIC相同的随机数字序列的函数。这应该在所有平台上都是稳定的,并提供24位精度,具有较低的随机性。
5 - 可在Win32和Linux上使用系统功能(Win32 Crypto API,Linux / dev / urandom)提供加密随机数。如果这些系统API不可用,将使用算法
3.
对于任何给定的种子,每个算法将产生该种子的特定的,确定性的数字序列。如果您希望每次调用
Randomize产生不同的数字序列,则应使用不太可预测的种子 - 例如,从
Timer返回的值。省略
seed 参数将使用基于此的值。
注意:直接使用
Timer值作为参数将产生相同的种子,如果在同一秒内使用多次。然而,无论如何,通常不值得使用不可预测的种子调用
Randomize两次,因为第二个序列将不再是第一个序列。在大多数情况下,Mersenne扭转器应提供足够随机的数字序列,而不需要在
Rnd调用之间重新进入。
当您使用QB兼容算法调用
Randomize时,会保留部分旧种子。这意味着如果您使用相同的种子多次调用
Randomize,则每次都将
不获得相同的序列。要获得QB兼容模式中的特定序列,请使用负参数调用
Rnd来设置种子。
例子
'' Seed the RNG to the method using C's rand()
Randomize , 1
''打印一系列随机数字
For i As Integer = 1 To 10
Print Rnd
Next
方言差异
与QB差别
- algorithm 参数是FreeBASIC的新功能。
- QBASIC只有一个算法(在算法编号4中的FB中复制),并在-lang qb 方言中设置为默认值)。
参考