甚至在Windows批处理中分发随机数

时间:2017-02-09 19:53:31

标签: windows batch-file random cmd

我想在Windows批处理中使用随机数。这是我的命令:

set /a "random_line=(%random%%%total)+1"

这会给我一个随机数的均匀分布吗?

修改

我已经查看了How to use random in BATCH script?,CherryDT的回答让我提出了有关均匀分布的问题:

  

请注意,这不会均匀分布!取0~99   例如,数字0~67将比...更频繁地出现   数字68~99因为32767模数100是67而不是0   必须是统一的分配。 (这%random% %%100不是   魔术语法,但实际上%random % %% 100只有一个空间,其中   %%只是一个转义%,代表模数。)

所以澄清一下,这会给我分配不均吗?

1 个答案:

答案 0 :(得分:4)

对您的问题的简短回答:,您的计算不会给您统一的分配。

回答很长,对想要实现的目标有点想象,

%random%将为您提供统一发布

但你的代码可能不是你假装的。

因为%RANDOM%动态变量生成0到32767(包括0和32767)的随机整数。

如果要将其转换为1%total%之间的统一整数分布,则需要进行此计算

SET /a random_line=(%RANDOM%*%total%/32768)+1