Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 编号生成器1-4 |批次_Batch File_Random - Fatal编程技术网

Batch file 编号生成器1-4 |批次

Batch file 编号生成器1-4 |批次,batch-file,random,Batch File,Random,有一种制作数字生成器的简单方法。 但我只希望生成的数字是1-4 以下程序需要太长时间才能获得输出 @echo off :RUN set /a Num=%random% if %num% LEQ 4 echo %num% goto :RUN 它运行%random%,直到小于4,这可能需要很长时间 您可以屏蔽随机值(和操作=和运算符)中的位,以检索较低的两个,获取[0,3]范围内的数字,并添加1以适应指定的范围 set /a "num=(%random% & 3) + 1" 或者,由于生

有一种制作数字生成器的简单方法。
但我只希望生成的数字是1-4

以下程序需要太长时间才能获得输出

@echo off
:RUN
set /a Num=%random%
if %num% LEQ 4 echo %num%
goto :RUN

它运行%random%,直到小于4,这可能需要很长时间

您可以屏蔽随机值(
操作=
运算符)中的位,以检索较低的两个,获取[0,3]范围内的数字,并添加1以适应指定的范围

set /a "num=(%random% & 3) + 1"
或者,由于生成的随机值使用15位,因此可以将其移位以仅检索两个高位

set /a "num=(%random% >> 13) + 1"
在这两种情况下都需要括号,因为
+
运算符的优先级高于
&
>
运算符

您还可以使用
Mod
操作(
%
运算符)从除4中检索余数,也可以获取范围为[0,3]的数字

set /a "num=%random% %% 4 + 1"

%%
运算符(在批处理文件中,必须对
%%
进行转义,使其成为
%%
)的优先级高于
+
运算符,因此这里不需要括号。

查看
for/?
的输出-特别是关于
for/L
的部分。或者您想要一个介于1和4之间的无限循环数吗?
set/a numbertween1和4=%random%%%4+1