我想在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
只有一个空间,其中%%
只是一个转义%
,代表模数。)
所以澄清一下,这会给我分配不均吗?
答案 0 :(得分:4)
对您的问题的简短回答:否,您的计算不会给您统一的分配。
回答很长,对想要实现的目标有点想象,
%random%
将为您提供统一发布
但你的代码可能不是你假装的。
因为%RANDOM%
动态变量生成0到32767(包括0和32767)的随机整数。
如果要将其转换为1
和%total%
之间的统一整数分布,则需要进行此计算
SET /a random_line=(%RANDOM%*%total%/32768)+1