![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-29 07:17 |
共 47,816 主题排行 / 349,916 发帖 / 今日 2 篇 / 48,265 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 如果我需要生成1到100之间的随机数,应该怎样写(完结) |
| 可打印版本 4,090 / 16 |
| 第1楼 mwh79 | 发表于 2006-12-01 04:41 |
| 初级用户 发帖 27 积分 86 | |
|
如果我需要生成1到100之间的随机数,应该怎样写(完结) 如果我需要生成1到100之间的随机数,应该怎样写
请教 有谁知道的吗,,用BAT来实现!!! 不使用=%random% 而是只在1到100起选取,提高效率! 搞定了,多谢了 [ Last edited by mwh79 on 2006-12-1 at 07:13 AM ] |
|
| 第2楼 NaturalJ0 | 发表于 2006-12-01 04:47 |
| 银牌会员 发帖 533 积分 1,181 | |
|
set /a RandomNumber=%random%%%100+1 (bat 中使用)
|
|
| 第3楼 mwh79 | 发表于 2006-12-01 04:51 |
| 初级用户 发帖 27 积分 86 | |
|
set /a RandomNumber=%random%%%100+1
运行不起来! 这样好象没有什么效率呀,,运行得到数,太慢了! [ Last edited by mwh79 on 2006-12-1 at 04:53 AM ] |
|
| 第4楼 zh159 | 发表于 2006-12-01 05:05 |
| 金牌会员 发帖 1,467 积分 3,687 | |
|
%random%是随机出现的数字,而且是瞬间的,如果你的机器反应慢,那应该是你机器的问题
|
|
| 第5楼 mwh79 | 发表于 2006-12-01 05:10 |
| 初级用户 发帖 27 积分 86 | |
|
不,主要是匹配的问题,如果要要生成95-97之间的随机数,,那就有可能,很久都得不到,
要看运气,,所以 我想把他固定在一个范围内! |
|
| 第6楼 zh159 | 发表于 2006-12-01 05:38 |
| 金牌会员 发帖 1,467 积分 3,687 | |
| 第7楼 mwh79 | 发表于 2006-12-01 05:51 |
| 初级用户 发帖 27 积分 86 | |
|
谢谢..我看了一下,,
不过还是没有我需要的,, 他们的随机都是从1开始的,,,能不能实现重35开始到100结束,这样的语句,,跳过1~35这样应该就有效率些,,,,我怕的就是从98~100这样的随机,,什么时候才能碰运气生成出来呀! |
|
| 第8楼 zh159 | 发表于 2006-12-01 05:56 |
| 金牌会员 发帖 1,467 积分 3,687 | |
|
你还没看仔细
用%random%单纯获取某一区段的随机数是有效率问题,问题是你怎样使用%random% |
|
| 第9楼 mwh79 | 发表于 2006-12-01 06:02 |
| 初级用户 发帖 27 积分 86 | |
|
%random%可以获取某一个区域吗,,,我试过了很多参数,,现在可以控制最大价值,可是没有办法控制最小值
|
|
| 第10楼 zh159 | 发表于 2006-12-01 06:07 |
| 金牌会员 发帖 1,467 积分 3,687 | |
| 第11楼 mwh79 | 发表于 2006-12-01 06:22 |
| 初级用户 发帖 27 积分 86 | |
|
大哥,你的那个效率怎么样呀!!
:STARTIP Set /a a=%RANDOM%%%250 IF %a% LEQ 100 goto startip IF %a% GEQ 105 goto startip 我这样的很没有效率 |
|
| 第12楼 zh159 | 发表于 2006-12-01 06:24 |
| 金牌会员 发帖 1,467 积分 3,687 | |
Originally posted by mwh79 at 2006-11-30 18:22: 结果源于测试 |
|
| 第13楼 mwh79 | 发表于 2006-12-01 06:31 |
| 初级用户 发帖 27 积分 86 | |
|
我测试下来,是一样的,,,,我其实想实现的是,,不是显示,,而是,只从35-100中间的数来读去,,,,1-34不读,,,这样可以做到马上就可以得到数据,不需要判断了!
|
|
| 第14楼 tianzizhi | 发表于 2006-12-01 06:39 |
| 高级用户 发帖 214 积分 623 | |
|
取一定范围的数,
@echo off ::22是范围数,45是底数即开始的数,即楼主要求的最小数.,如取45-67之间的数,请注意格式,写错了就会出错,楼主说没有运行成功是因为格式错,还有取一段范围的数要用批处理实现,在cmd下会出错,在cmd取一随机数可以,就是只写%random%. set /a c=%random% %% 22+45 echo %c% ::取随机两位数 set /a d=%random:~0,2% echo %d% ::避免00 set /a e=1%random:~0,2%-100 echo %e% |
|
| 第15楼 mwh79 | 发表于 2006-12-01 06:53 |
| 初级用户 发帖 27 积分 86 | |
|
不错,谢谢,知道怎么些最小值了,,,
还有个问题 set /a c=%random% %% 22+45 这段中的两个数可以写成变量吗?? 因为这样太不灵活了,太死,,手动改太麻烦,,,, |
|
| 1 2 下一页 |
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |