下面对于随机种子做修正:
随机数种子不是2个字节,而是10个字节,只有最后两个字节用来做计时器,倒数第二个字节就是传说中的不稳定字符。
这10个字节紧接着排在第二缓冲区后面,M存储区前面。
在 Shift 9 3 之后,随机数的10个字节全部清零。
在第一次计算 Ran# 之前,前面8个字节一直为零。
每一次 Ran# 计算会利用现有的这10个字节的内容做一次神秘的运算,运算之后会得到一个 0≤X<1 的数。输出的时候只输出4个有效数字。
由于这个数是 0≤X<1 的,最后两位会被置0x99 0x00。然后不稳定字符会继续增加:0xA0 0xA1 0xA2 0xA3……
也就是说,在计算过一次伪随机数之后,最后两个字节就不代表上一次清零到现在的秒数了,而是上一次伪随机数计算到现在的秒数减去 153。
总而言之,伪随机数的结果不仅与上一次清零到现在的秒数或者上一次伪随机数计算到现在的秒数(后两个字节)有关,还与上一次伪随机数计算(前八个字节)结果有关。
以上结果通过 fx-82ES PLUS 模拟器得到。
交叉引用:
https://tieba.baidu.com/p/2806065647 (18楼)