mou*_*sio 114
%RANDOM%
给你一个0到32767之间的随机数.
使用类似的表达式SET /A test=%RANDOM% * 100 / 32768 + 1
,您可以将范围更改为您喜欢的任何内容(此处范围为[1 ... 100]而不是[0 ... 32767]).
Gar*_*yNg 49
%RANDOM%为您提供0到32767之间的随机数.
您可以使用以下命令控制数字的范围:
set /a num=%random% %%100
Run Code Online (Sandbox Code Playgroud)
- 将产生0到99之间的数字.
这个:
set /a num=%random% %%100 +1
Run Code Online (Sandbox Code Playgroud)
- 将产生1到100之间的数字.
ind*_*div 18
您可能希望获得几个随机数,并且可能希望能够为每个数指定不同的范围,因此您应该定义一个函数.在我的例子中,我生成从25到30的数字call:rand 25 30
.结果是在RAND_NUM
该函数退出之后.
@echo off & setlocal EnableDelayedExpansion
for /L %%a in (1 1 10) do (
call:rand 25 30
echo !RAND_NUM!
)
goto:EOF
REM The script ends at the above goto:EOF. The following are functions.
REM rand()
REM Input: %1 is min, %2 is max.
REM Output: RAND_NUM is set to a random number from min through max.
:rand
SET /A RAND_NUM=%RANDOM% * (%2 - %1 + 1) / 32768 + %1
goto:EOF
Run Code Online (Sandbox Code Playgroud)
小智 7
set /a number=%random% %% [maximum]-[minimum]
Run Code Online (Sandbox Code Playgroud)
例子 ”
set /a number=%random% %% 100-50
Run Code Online (Sandbox Code Playgroud)
将给出 100 到 50 之间的随机数。如果您不在批处理脚本中使用该行,请确保仅使用一个百分号作为操作数!
你可以这样做,这不需要EnableDelayedExpansion
:choosenamea
cls
set /a choosemname=%random%
if %choosemname% GTR %max% goto choosenameb
if %choosemname% LSS %min% goto choosenameb
goto gotnamenow
Run Code Online (Sandbox Code Playgroud)
哪里max
是你的最大值,哪里min
是你的最小值。这不是很有效,因为如果你的范围太小,可能会花费很多回合。此外,这对于大于 32767 的数字不起作用。
@echo off & setLocal EnableDelayedExpansion
for /L %%a in (1 1 100) do (
echo !random!
)
Run Code Online (Sandbox Code Playgroud)