谢谢各位!辛苦了!!!
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!
:: 生成0-99之间的随机数列 R1
:: qzwqzw@bbs.cn-dos.net
:: 2007-01-04 23:03
@echo off
setlocal EnableDelayedExpansion
:: 初始化顺序数列
for /l %%i in (0,1,99) do (
set rnum%%i=%%i
)
:: 对数列进行随机交换
for /l %%i in (0,1,99) do (
set /a rnd=!random! %% 100
call set tmp=%%rnum!rnd!%%
set rnum!rnd!=!rnum%%i!
set rnum%%i=!tmp!
)
set rnum
pause
@echo off
:start
cls
set Num=
set Tmp$=
:loop
set /a randomloop=%random%%%99+1
for %%n in (%Tmp$%) do if "%randomloop%" == "%%n" goto loop
call set Tmp$=%%Tmp$%% %randomloop%
set /a Num+=1
set random_%Num%=%randomloop%
if %Num% LSS 5 goto loop
for /l %%n in (1,1,%Num%) do call set /p= %%random_%%n%%<nul
echo.
pause
goto start
exit| 评分人 | 分数 | 时间 |
|---|---|---|
| 26933062 | +2 | 2007-01-06 12:29 |

Originally posted by tghksj at 2007-1-5 14:42:
又是 qzwqzw 我的偶像啊~~
32楼看不懂啊~~~~~我受不了了~你的每个代码我都得看上一两天...
求求你逐句解释一下行吗???妈妈密啊~~~受不了了~~!!!
--- ...
Originally posted by lxmxn at 2007-1-5 12:47:
经过多次测试,发现13楼的代码很怪,结果中的五个数中的第一个数很容易和下一次测试结果中的第一个数相同,不知道是什么原因,可能代码有问题。
Originally posted by 26933062 at 2007-1-5 21:50:
是啊,版主,你6楼的代码,经过多次测试,同样发现了重复的现象.
@echo off
:begin
cls
set times=0
set count=0
:loop
set /a num=%random%%%99+1
if not defined num%num% (
set num%num%=%num%
set /a count+=1
call echo %%num%%
)
set /a times+=1
if %times% equ 20 (
for /l %%i in (1,1,99) do set num%%i=
set times=0
)
if %count% lss 5 goto loop
pause>nul
goto begin
@echo off
set count=1
set num=
echo %random% >nul
:DORND
set /a rnd=%random%*100/32767+1
echo %num% | find " %rnd% " && goto DORND
set num=%num% %rnd%
set /a count+=1
if %count% lss 6 goto DORND
echo %num%
pause
Originally posted by lxmxn at 2007-1-5 12:47 PM:
经过多次测试,发现13楼的代码很怪,结果中的五个数中的第一个数很容易和下一次测试结果中的第一个数相同,不知道是什么原堮..
@echo off
set count=1
:loop
echo %random% & echo.
set /a count+=1
if %count% lss 10 goto loop
pause
Originally posted by dikex at 2007-1-6 01:02:
凑凑热闹也发一个
各位看到第四行可能会觉得奇怪,关于这个请看下面xmxn的提问和我的个人见解
这个貌似是产生随机数的方法有问题 ...
@echo off&setlocal enabledelayedexpansion
for /l %%a in (1,1,20) do echo !random!
pause