中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 如何在指定的范围内显示随机数字
« [1] [2] »
作者:
标题: 如何在指定的范围内显示随机数字 上一主题 | 下一主题
dikex
高级用户

潜水修练批处理



积分 788
发帖 366
注册 2006-12-31
状态 离线
『第 16 楼』:  

汗,我这里出现“灵异”现象了……

下面的两个代码,第一个出错,第二个却成功了,但他们的区别只是第一个(%random%)%%(%n%)+1运算后的值赋予%tn%,而第二个则将运算后的值继续赋予%n%……
@echo off
set "string=6 7 8 9 10 11 12 14 15 16 17"
for %%i in (%string%) do call set /a "n=%%n%%+1"
set /a "tn=(%random%)%%(%n%)+1"
for /f "usebackq tokens=%tn% delims= " %%i in ('%string%') do echo %%i
pause
goto :EOF

@echo off
set "string=6 7 8 9 10 11 12 14 15 16 17"
for %%i in (%string%) do call set /a "n=%%n%%+1"
set /a "n=(%random%)%%(%n%)+1"
for /f "usebackq tokens=%n% delims= " %%i in ('%string%') do echo %%i
pause
goto :EOF
[ Last edited by dikex on 2007-11-29 at 04:40 PM ]



正在潜水修练的批处理小白
2007-11-29 16:32
查看资料  发短消息 网志   编辑帖子  回复  引用回复
khansky
新手上路





积分 12
发帖 4
注册 2007-10-29
状态 离线
『第 17 楼』:  



  Quote:
Originally posted by 26933062 at 2007-11-29 04:03 PM:



你说9楼的每次都是 15 ??
你测试了没有啊?在我这里一切正常。每次都是随机数。
别人给你写了代码,你就应该好好测试,这是最起码的尊重吧?

事实是如此!即使是变成别的数,也是连续10个左右相同的再变成别的数字。
既然提出这样的问题,就说明起码是专业的,而不是你说的“没有好好测试,不尊重之类的“我的是英文的xp。公司对系统的安全性要求比较高。

2007-11-29 16:43
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
dikex
高级用户

潜水修练批处理



积分 788
发帖 366
注册 2006-12-31
状态 离线
『第 18 楼』:  

关于9楼的那个,我这里是测试成功的
至于楼主失败的原因,我猜想可能是那个系统里面有其他以"_"为开始的环境变量导致的,改一改看看
@echo off
set "string=6 7 8 9 10 11 12 14 15 16 17"
for %%a in (%string%) do call set _dd_%%random%%=%%a
for /f "tokens=2 delims==" %%a in ('set _dd_^|sort') do set var=%%a
echo %var%
pause
[ Last edited by dikex on 2007-11-29 at 04:51 PM ]



正在潜水修练的批处理小白
2007-11-29 16:49
查看资料  发短消息 网志   编辑帖子  回复  引用回复
dikex
高级用户

潜水修练批处理



积分 788
发帖 366
注册 2006-12-31
状态 离线
『第 19 楼』:  

另外关于我16楼遇到的“灵异”现象,发现set /a "tn=(%random%)%%(%n%)+1"这个语句里面被赋值的变量名称只能是一个字符的,多于一个字符也会出错(测试过,和for无关),但如果把赋值表达式两边的引号也去掉,则不会出现这个错误!

狂倒……



正在潜水修练的批处理小白
2007-11-29 16:58
查看资料  发短消息 网志   编辑帖子  回复  引用回复
26933062
银牌会员





积分 2268
发帖 879
注册 2006-12-19
状态 离线
『第 20 楼』:  

16楼遇到的“灵异”现象好像和 usebackq 有关,不用usebackq 一切正常,用它就会提示找不到什么什么文件?还显示一些乱码,非常奇怪。



致精致简!
2007-11-29 18:20
查看资料  发短消息 网志   编辑帖子  回复  引用回复
scriptor
银牌会员




积分 1187
发帖 555
注册 2006-12-21
状态 离线
『第 21 楼』:  



  Quote:
Originally posted by khansky at 2007-11-29 15:22:
谢谢各位兄弟的帮忙。现在运行这些脚本有以下几点看法:1)。4楼的结果虽然是对的,但要一直循环。我的目的是随机给一个变量赋值为上面数值之 ...

怎么会没有结果
我这里一切正常~~

2007-11-29 18:28
查看资料  发短消息 网志   编辑帖子  回复  引用回复
terse
银牌会员





积分 2404
发帖 946
注册 2005-9-8
状态 离线
『第 22 楼』:  

@echo off
set /a p=%random%%%11+1
for /f "tokens=%p% delims= " %%i in ("6 7 8 9 10 11 12 14 15 16 17") do echo %%i
pause



简单!简单!再简单!
2007-11-29 18:51
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
« [1] [2] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: