批量随机函数给出相同的第一输出

时间:2015-01-10 19:20:25

标签: batch-file random random-seed

在我的批处理程序中,我在其中间有这一行:

set /a scramble=%random%

这里的问题是,每次打开批处理文件时,它都会给我相同的输出,例如我打开它并将%scramble%设置为17534,下次打开它时,它非常相似,例如17546,增加少量。如果我循环它,那么只有第一个随机数是相似的,其余的都是随机的。

例如我第一次运行它时,它会给我这个数字列表:

  

23486,32645,4854

第二次给出

  

23498,26374,17322

所以只有第一个是相似的。

一个简单的解决方法是将echo %random%然后cls放在批处理的开头,这对我来说不是问题,但我只是想知道为什么会这样?

1 个答案:

答案 0 :(得分:0)

cmd中的随机数生成器使用当前时间(具有第二个分辨率)来为prng播种。每个cmd实例执行一次初始化。

因此,如果您每次都在新的cmd实例中运行批处理文件,则种子在每种情况下都非常相似。

但是如果你在同一个cmd实例中多次启动批处理文件,那么序列将不会像初始化只进行一次那样相似。

可以找到更多信息here