![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-06 13:22 |
共 48,039 主题排行 / 350,124 发帖 / 今日 0 篇 / 48,251 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » [已结]set /a 中 %取余的用法! |
| 可打印版本 1,112 / 12 |
| 第1楼 logictianjin | 发表于 2007-04-12 22:32 |
| 初级用户 发帖 25 积分 58 | |
|
[已结]set /a 中 %取余的用法! @echo off&setlocal EnableDelayedExpansion
for /l %%a in (1,1,5) do ( set /a yunsuan=!random!%%20+1 @echo !yunsuan!) 以上是我瞎写的一段,我知道random可以随机返回 0 到 32767 之间的任意十进制数字 我对取余是一窍不通,以上的代码不会产生大于20的数字,请给讲下取余是怎么取的?!random!%%20+1 反正我按除法是理解不了! [ Last edited by logictianjin on 2007-4-12 at 12:19 PM ] |
|
| 第2楼 lililulula | 发表于 2007-04-12 23:10 |
| 中级用户 发帖 138 积分 302 | |
|
楼主 我也是菜鸟 但是你说的取余的话 对于固定的比较小的除数我想你可以试试这样
set b=%random% set /a c=%b%-%b%/3-%b%/3-%b%/3 echo %c% pause 例子中除数为3,因此做3次减运算,被除数为随即生成0到32767之间的数,当然除数超过10了或者更大这种方法就不好,因为我也是在学习,目前只想的到这样最笨的方法 |
|
| 第3楼 bjsh | 发表于 2007-04-12 23:19 |
| 银牌会员 发帖 621 积分 2,000 | |
|
set /a p=%random%%20+1
是把随机数的范围约束在 (1,20) set /a p=%random%%3+1 同样 (1,3) |
|
| 第4楼 logictianjin | 发表于 2007-04-12 23:40 |
| 初级用户 发帖 25 积分 58 | |
Originally posted by bjsh at 2007-4-12 10:19 AM: 如果没有后面的+1是不是就有可能会产生0 |
|
| 第5楼 bjsh | 发表于 2007-04-13 00:02 |
| 银牌会员 发帖 621 积分 2,000 | |
|
是的如果没有0的话;
(0,19) |
|
| 第6楼 logictianjin | 发表于 2007-04-13 00:05 |
| 初级用户 发帖 25 积分 58 | |
Originally posted by bjsh at 2007-4-12 11:02 AM: 那可以不可以这样写? set /a p=%random%%20+0 |
|
| 第7楼 bjsh | 发表于 2007-04-13 00:16 |
| 银牌会员 发帖 621 积分 2,000 | |
|
可以啊!
(0,19) 在批处理中还需要考虑%的问题; 应该是 set /a p=%random%%%20+0 |
|
| 第8楼 logictianjin | 发表于 2007-04-13 00:30 |
| 初级用户 发帖 25 积分 58 | |
Originally posted by bjsh at 2007-4-12 11:16 AM: 为什么是(0,19)而不是(0,20)呢? |
|
| 第9楼 bjsh | 发表于 2007-04-13 00:51 |
| 银牌会员 发帖 621 积分 2,000 | |
|
什么数除以20能余20啊!呵呵;
无论什么数 除以20后的余数只能是 (0,19) 这也是%random%%20+1能把随机数约束到(1,20)的原因 |
|
| 第10楼 logictianjin | 发表于 2007-04-13 01:15 |
| 初级用户 发帖 25 积分 58 | |
Originally posted by bjsh at 2007-4-12 11:51 AM: 越说越糊涂了,比如30000/20=1500 那余是多少? 也就是这个余到底是怎么算出来的? |
|
| 第11楼 bjsh | 发表于 2007-04-13 01:16 |
| 银牌会员 发帖 621 积分 2,000 | |
|
余不就是整除后剩下的余数吗,呵呵
30000/20=1500 当然是余0了 |
|
| 第12楼 logictianjin | 发表于 2007-04-13 01:18 |
| 初级用户 发帖 25 积分 58 | |
|
我看我是学傻了,连小学的数学都不会算了,哈哈哈 !!!多谢兄弟的指点
|
|
| 第13楼 nanhui112 | 发表于 2007-11-19 11:53 |
| 初级用户 发帖 59 积分 127 | |
|
[0 20) [0 19]
|
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |