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

Batch random function giving same first output

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

set /a scramble=%random%

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

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

23486,32645,4854

第二次给

23498,26374,17322

所以只有第一个相似。

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

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

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

但是,如果您在同一个 cmd 实例中多次启动批处理文件,序列将不会如此相似,因为初始化仅完成一次。

可以找到更多信息here