设置变量 n1 到 n100 每个变量都随机储存一个小于100的数 并且都没重复
主要就要要随机
主要就要要随机
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
FOR /L %%I IN (1,1,100) DO SET NUM%%I=%%I
FOR /L %%I IN (1,1,100) DO (
SET/A RDOM=!RANDOM! %% 100 + 1
SET TEMP=!NUM%%I!
CALL SET NUM%%I=%%NUM!RDOM!%%
SET NUM!RDOM!=!TEMP!
)
FOR /L %%I IN (1,1,100) DO ECHO !NUM%%I!
PAUSE
::原理,把有序的数字%%a赋值给 _%随机数%_%%a ,这样当set _ 将变量名排序并列出时,反倒使他们的值1-100的数字变成了随机的。
::而_%随机数%_%%a 中,后面的_%%a是为了避免 随机数相同 时 把上次赋的值给覆盖了.
::为了进一步避免所以用 “_” 将随机数和有序数隔开,而%%a是1-100不重复,这样就绝对不会出现替代现象啦。
@echo off
for /l %%a in (1,1,100) do (call set _%%random%%_%%a=%%a)
for /f "delims== tokens=2" %%a in ('set _') do (echo %%a)
pause
@echo off
setlocal enabledelayedexpansion
for /l %%I in (1,1,100) do set Num%%I=%%I
for /l %%I in (1,1,100) do (
set /a R=!random! %% 100 + 1
call set /a Num%%I=%%Num!R!%%,Num!R!=!Num%%I!
rem,理解式 NumI = %NumR% ,NumR = %NumI%
rem,注意:由于环境变量表示的性质,这里 %NumI% 只表示上一步时的值,不受同句子中NumI赋值的影响.
)
for /l %%I in (1,1,100) do echo,!Num%%I!
pause
@echo off&setlocal enabledelayedexpansion
for /l %%i in (1,1,100) do set "_!random!!random!!random!=%%i"
for /f "tokens=2 delims==" %%i in ('set _') do echo %%i
pause>nul