在我的批处理程序中,我在其中间有这一行:
set /a scramble=%random%
这里的问题是,每次打开批处理文件时,它都会给我相同的输出,例如我打开它并将%scramble%设置为17534,下次打开它时,它非常相似,例如17546,增加少量。如果我循环它,那么只有第一个随机数是相似的,其余的都是随机的。
例如我第一次运行它时,它会给我这个数字列表:
23486,32645,4854
第二次给出
23498,26374,17322
所以只有第一个是相似的。
一个简单的解决方法是将echo %random%
然后cls
放在批处理的开头,这对我来说不是问题,但我只是想知道为什么会这样?
答案 0 :(得分:0)
cmd中的随机数生成器使用当前时间(具有第二个分辨率)来为prng播种。每个cmd
实例执行一次初始化。
因此,如果您每次都在新的cmd
实例中运行批处理文件,则种子在每种情况下都非常相似。
但是如果你在同一个cmd
实例中多次启动批处理文件,那么序列将不会像初始化只进行一次那样相似。
可以找到更多信息here