是否有一种算法能得知它的下一个随机数是多少
编号:QA004497
建立日期: 2001年12月11日 最后修改日期:2001年12月11日
所属类别:
king6:
不知算不算是问题。
请教VB 6 中的 x=Rnd 所得到的0-1 之间的所谓随机数,是否有一种算法能得知它的下一个随机数是多少?在不使用 Randomize 的情况下每次都是按顺序。
.705547
.533424
.579518
.289562
我想这些数之间应该会有因果关系或叫算法吧?如您知道该是怎样算法的话请您告诉我好吗?
回答:
一般的伪随机数都是按下面的公式计算的:
r(i) = (A * r(i-1) + B ) Mod m, i = 1, 2, ...
p(i) = r / m
这里A、B、m。例如,你可以选A = 2053、B=13849、m=2^16。虽然VB没有说明Rnd函数使用的是什么算法,但我估计也是采用的是上面的公式,只是A、B和m的取值不同罢了。而Randomize实际指定的是公式中的r(0)。
此问题由李海回答。
| |
|
|
| |
|
|