Batch file 批处理文件中的最小值到最大值

Batch file 批处理文件中的最小值到最大值,batch-file,cmd,Batch File,Cmd,我有一个关于我正在写的一段代码的问题 Set /a 4DgtNum= %Random% %%9999 这就是我们正在使用的东西。我需要知道如何生成“从这个数字开始,在另一个数字的范围内结束”代码,如“从开始”(即1000,您可以达到的最大值为9999,但使用该比率之间的任何数字)。@ECHO Off SETLOCAL enabledelayedexpansion 对于%%b IN(#)DO For/F“delims=”%%a IN('set%%b 2^>Nul')DO set“%%a=” 对于

我有一个关于我正在写的一段代码的问题

Set /a 4DgtNum= %Random% %%9999
这就是我们正在使用的东西。我需要知道如何生成“从这个数字开始,在另一个数字的范围内结束”代码,如“从开始”(即1000,您可以达到的最大值为9999,但使用该比率之间的任何数字)。

@ECHO Off
SETLOCAL enabledelayedexpansion
对于%%b IN(#)DO For/F“delims=”%%a IN('set%%b 2^>Nul')DO set“%%a=”
对于/L%%x英寸(1,130000),请拨打电话:选择取消并设置/a!嗯+=1.
设置#
后藤:eof
:choosernd
设置/最小值=1000
设置/a最大值=9999
设置/a最小值=1
设置/a最大值=5
设置/a范围大小=最大最小值+1
设置/a numranges=32767/范围大小
设置/a最大范围=范围大小*numranges-1
:chooseagain
set/a num=%RANDOM%
如果%num%gtr%maxrange%GOTO choosegain
设置/a数值=(数值%%rangesize)+分钟
rem回显%num%
后藤:EOF
这个问题已经被问了很多次了。这里有一个生成和测试例程

问题的核心是
:choosernd
例程,您可以在其中设置最小值和最大值

我用
1
5
覆盖了您的
1000
9999
,以便于测试

首先,计算范围大小。这一部分应该是显而易见的

下一步-随机数生成器返回0..32767范围内的
%random%
,因此例如使用
%random%%%100
将返回0..67范围内的328个数字,但68..99范围内的327个数字。因此,计算可用的全量程数(327)和最大值,以获得均匀分布;(100*327)-1=32699

获取一个随机数,但拒绝任何大于最大值的,因此拒绝32700..32767

对所选过滤数字执行模数运算,并添加最小值,给出
num

在此之前的代码只是清除名称以
#
开头的任何变量,然后执行
:choosernd
例程30000次。每次,变量#!号码!是递增的,其中使用
delayedexpansion
(对此进行了多次解释-使用
search
工具)来正确选择计数器

然后显示计数器进行验证(“随机”发生器不是特别好)

请注意,
delayedexpansion
仅在日志记录例程中使用-不需要为
:choosernd
例程调用它

另外-请注意,变量名称不能以数字开头


当您使用执行批处理的点击和咯咯笑方法时,如果发现语法错误,批处理窗口通常会关闭。相反,您应该从那里开始运行批处理,以便窗口保持打开状态,并显示任何错误消息。

再次您好,当我运行程序时,它只会显示相同数字的重复,即(4086 4012 4012 4012)啊,没关系,经过一些尝试和错误,我解决了问题。非常感谢