这个随机数发生器如何工作

时间:2016-01-27 18:56:06

标签: vbscript

我提供了一段代码来随机化文本文件中的单词顺序,但我不确定它究竟在做什么。这是代码。

 Randomize()

    For count = 1 To 10
        rand = (Int((10 - count + 1) * Rnd() + count))
        temp = words(count)
        words(count) = words(rand)
        words(rand) = temp
    Next

有人可以向我解释一下吗?提前谢谢。

1 个答案:

答案 0 :(得分:3)

首先检查msdn rnd description并注意:

  

Rnd函数返回小于1但大于或等于0的值

  

要生成给定范围内的随机整数,请使用以下公式:Int((upperbound - lowerbound + 1) * Rnd + lowerbound)

考虑到这一点,我们看到下一个算法:

  1. 将当前单词索引设置为1(第一个单词)
  2. 选择等于或大于当前的随机索引(即从阵列的其余部分中选择单词)
  3. 随机选择
  4. 交换当前单词
  5. 增加当前单词索引(即减少未分配单词池的大小)
  6. 转到#2
  7. 你也可以使用一点点不同的描述:

    想象你有一组无序的单词,你随机选择一个,从集合中删除它并将它附加到有序数组,所以最后你将从原始集合中随机排序的单词数组