Board logo

标题: [求助]随机数的另外一个问题 [打印本页]

作者: pusofalse     时间: 2008-6-2 01:34    标题: [求助]随机数的另外一个问题

问题思路来自于: http://www.cn-dos.net/forum/viewthread.php?tid=39925&fpage=1 1.bat
@echo off
:1
set/a n=%random%%%49+100
echo %n%
pause>nul
goto 1
然后打开CMD for %a in (1 1) do start 1.bat 发现随机数都是一样的。。。 想不明白是怎么回事~ 请高手们指教~ [ Last edited by pusofalse on 2008-6-2 at 01:42 AM ]

作者: joyn     时间: 2008-6-2 01:42
很奇怪~~

作者: 26933062     时间: 2008-6-2 02:06
据说随机数是由时间为基数计算来的,若在start 1.bat&ping/n 10 127.1>nul 延时。 就不一样了。

作者: pusofalse     时间: 2008-6-2 02:26
谢谢3楼

作者: moniuming     时间: 2008-6-2 10:25
随机数在FOR循环里是无法改变的
@echo off
:1
for /l %%a in (1 1 10) do echo %random%
pause&cls&goto :1
@echo off
:1
for /l %%a in (1 1 10) do call :echo_
pause&cls&goto :1
:echo_
echo %random%

作者: zh159     时间: 2008-6-2 10:30
Originally posted by moniuming at 2008-6-2 10:25: 随机数在FOR循环里是无法改变的
@echo off
:1
for /l %%a in (1 1 10) do echo %random%
pause&cls&goto :1
@echo off
:1
for /l %%a in (1 1 10) do call :echo ...
不是无法改变,而是方法错误 启用延迟变量
@echo off :1 for /l %%a in (1 1 10) do call echo %%random%% pause&cls&goto :1

作者: moniuming     时间: 2008-6-2 10:49
谢谢6楼!!!!!!!!!

作者: liyyhh     时间: 2008-6-2 13:35
路过,看不懂,下次再请教。

作者: pusofalse     时间: 2008-6-2 14:13
6楼的方法总会有重复的。。。可能10次没有一次 但100次,1000次,循环多了的话就有那个一两个重复数

作者: zh159     时间: 2008-6-2 15:50
Originally posted by pusofalse at 2008-6-2 14:13: 6楼的方法总会有重复的。。。可能10次没有一次 但100次,1000次,循环多了的话就有那个一两个重复数
何为“随机数”,就是随机生成的数字,set/?说明了:%RANDOM% - 扩展到 0 和 32767 之间的任意十进制数字。 对于获取随机数,如果不加存储和判断,随机数肯定会出现相同的数,而且随机数的次数会受到设定条件的限制。