随机数在Windows批处理中的均匀分布



我想要一个Windows批处理中的随机数。 这是我的命令:

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

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

编辑:

我已经看过如何在 BATCH 脚本中使用随机?,CherryDT 的回答让我问了关于均匀分布的问题:

请注意,这不会均匀分布!取0~99 例如,数字 0~67 的出现频率略高于 数字 68~99,因为 32767 模 100 是 67 而不是 0 必须均匀分布。(此%random% %%100不是 魔术语法,但实际上%random % %% 100少了一个空格,其中 %%只是一个转义的%,代表模。

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

简要回答您的问题:,您的计算不会给您均匀分布。

长答案,对你想要实现的目标有一点想象力,

%random%会给你一个均匀的分布

但是你的代码可能没有做你假装的事情。

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

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

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

相关内容

最新更新