对随机函数的一些疑惑
“对最初给定的种子都会生成相同的数列,因为每一次调用 Rnd 函数都用数列中的前一个数作为下一个数的种子。”
种子到底是指什么?数列又在哪里?是否可以理解为,如果种子相同,那么在任意的时间和环境下,用RND函数会得到同一值?
随机函数真的是随机吗?得出来的随机数是以什么为依据呢?
“在调用 Rnd 之前,先使用无参数的 Randomize 语句初始化随机数生成器,该生成器具有根据系统计时器得到的种子。”
RANDOMIZE是个生成器,如果它是根据系统计时器而得到种子,那么假设我用某方法将系统计时器的时间锁定,那还能达到随机的效果吗?
“ Int((upperbound - lowerbound + 1) * Rnd + lowerbound) 这里,upperbound 是随机数范围的上限,而 lowerbound 则是随机数范围的下限。”
这个公式怎么理解?RND等于1的时候就产生最大值?RND=0的时候就产生最小值?
“注意 若想得到重复的随机数序列,在使用具有数值参数的 Randomize 之前直接调用具有负参数值的 Rnd。使用具有同样 number 值的 Randomize 是不会得到重复的随机数序列的。”
这句话我还是没懂。
请大家帮我解答一下,实在是很困惑!看了很多资料也不能释疑