中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-06-14 13:28
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [求助]随机数的另外一个问题
楼 主 [求助]随机数的另外一个问题 发表于 2008-06-02 01:34 ·  中国 山东 淄博 联通
银牌会员
★★★
积分 1,604
发帖 646
注册 2008-04-13 23:39
UID 115804
性别 男
状态 离线
问题思路来自于:
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 ]
心绪平和,眼藏静谧,无比安稳的火... Purification of soul...Just a false...^_^
2 发表于 2008-06-02 01:42 ·  中国 广西 南宁 电信
中级用户
★★
丶杏灬丶
积分 280
发帖 105
注册 2008-05-06 03:37
UID 117858
性别 男
来自 广西
状态 离线
很奇怪~~
3 发表于 2008-06-02 02:06 ·  中国 湖南 娄底 电信
银牌会员
★★★
积分 2,268
发帖 879
注册 2006-12-19 16:23
UID 73968
性别 男
状态 离线
据说随机数是由时间为基数计算来的,若在start 1.bat&ping/n 10 127.1>nul 延时。
就不一样了。
致精致简!
4 发表于 2008-06-02 02:26 ·  中国 山东 淄博 联通
银牌会员
★★★
积分 1,604
发帖 646
注册 2008-04-13 23:39
UID 115804
性别 男
状态 离线
谢谢3楼
心绪平和,眼藏静谧,无比安稳的火... Purification of soul...Just a false...^_^
5 发表于 2008-06-02 10:25 ·  中国 广东 广州 电信
银牌会员
★★★
永远的菜鸟
积分 1,335
发帖 574
注册 2007-11-27 12:50
UID 103929
性别 男
来自 广西
状态 离线
随机数在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%
6 发表于 2008-06-02 10:30 ·  中国 广西 玉林 博白县 电信
金牌会员
★★★★
积分 3,687
发帖 1,467
注册 2005-08-08 12:00
UID 44210
状态 离线
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
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
moniuming +7 2008-06-02 10:49
7 发表于 2008-06-02 10:49 ·  中国 广东 广州 电信
银牌会员
★★★
永远的菜鸟
积分 1,335
发帖 574
注册 2007-11-27 12:50
UID 103929
性别 男
来自 广西
状态 离线
谢谢6楼!!!!!!!!!
8 发表于 2008-06-02 13:35 ·  中国 广东 广州 电信
初级用户
积分 48
发帖 27
注册 2008-06-01 23:43
UID 120310
性别 男
状态 离线
路过,看不懂,下次再请教。
9 发表于 2008-06-02 14:13 ·  中国 山东 淄博 联通
银牌会员
★★★
积分 1,604
发帖 646
注册 2008-04-13 23:39
UID 115804
性别 男
状态 离线
6楼的方法总会有重复的。。。可能10次没有一次 但100次,1000次,循环多了的话就有那个一两个重复数
心绪平和,眼藏静谧,无比安稳的火... Purification of soul...Just a false...^_^
10 发表于 2008-06-02 15:50 ·  中国 广西 玉林 博白县 电信
金牌会员
★★★★
积分 3,687
发帖 1,467
注册 2005-08-08 12:00
UID 44210
状态 离线
Originally posted by pusofalse at 2008-6-2 14:13:
6楼的方法总会有重复的。。。可能10次没有一次 但100次,1000次,循环多了的话就有那个一两个重复数

何为“随机数”,就是随机生成的数字,set/?说明了:%RANDOM% - 扩展到 0 和 32767 之间的任意十进制数字。
对于获取随机数,如果不加存储和判断,随机数肯定会出现相同的数,而且随机数的次数会受到设定条件的限制。
论坛跳转: