注册
登录
论坛
搜索
帮助
导航
私人消息 (0)
公共消息 (0)
论坛任务 (0)
系统消息 (0)
好友消息 (0)
帖子消息 (0)
批处理之家
»
BAT教程&资料
» [ 一日一教学 ] 批处理中随机数的应用
[新手上路]
批处理新手入门导读
[视频教程]
批处理基础视频教程
[视频教程]
VBS基础视频教程
[批处理精品]
批处理版照片整理器
[批处理精品]
纯批处理备份&还原驱动
[批处理精品]
CMD命令50条不能说的秘密
[在线下载]
第三方命令行工具
[在线帮助]
VBScript / JScript 在线参考
返回列表
发帖
wxcute
发短消息
加为好友
wxcute
(冰疼)
当前离线
UID
3607
帖子
618
精华
0
积分
6100
PB
6073
技术
9
捐助
0
阅读权限
254
在线时间
663 小时
注册时间
2008-8-10
最后登录
2010-2-24
荣誉版主
帖子
618
积分
6100
技术
9
捐助
0
注册时间
2008-8-10
1
楼
跳转到
»
倒序看帖
打印
字体大小:
t
T
发表于 2008-11-16 20:04
|
显示全部帖子
[ 一日一教学 ] 批处理中随机数的应用
%random%
CMD 中 set /? 随机数相关帮助如下
%RANDOM% - 扩展到 0 和 32767 之间的任意十进制数字。
%RANDOM% 是一个系统的环境变量。要怎么应用呢?
CMD 下
echo %random%
复制代码
保存为 *.BAT 或 *.cmd
::按一下变一个
@echo off
echo %random%
pause>nul
%0
复制代码
如何显示指定范围的随机数呢?
我们知道拿 m 对 n 取余的话,结果都是在 0 到时 n-1 之间。
即:m mod n = 0 ~ n-1
所以用取余的方法就可以得到指定范围的随机数了。
批处理中 % 表示取余。
写法:m %% n (为什么要用两个 %,请看
http://bbs.bathome.net/thread-502-1-1.html
)
示例:
取 0 - 9 任意一个
set /a n=%random% %% 10
加 /a 是因为进行了取余计算
要取 31 - 98 之间任一个呢?
set /a Rn=%random%%%68 +31
因为 %random%%%68 是从 0 到 67( 68 等于 98-31+1),所以加上 31 就是从 31 到 98 了。
总结规律就是 68 为 31 - 98 范围内数的个数,31 为开始的那个数。
其他的就自己推吧!
[
本帖最后由 wxcute 于 2008-11-17 08:38 编辑
]
1
评分人数
lixiaodaoaaa:
很好啊!!冰疼,你写的很好!谢谢你拉! ...
PB + 6
收藏
分享
wxcute
发短消息
加为好友
wxcute
(冰疼)
当前离线
UID
3607
帖子
618
精华
0
积分
6100
PB
6073
技术
9
捐助
0
阅读权限
254
在线时间
663 小时
注册时间
2008-8-10
最后登录
2010-2-24
荣誉版主
帖子
618
积分
6100
技术
9
捐助
0
注册时间
2008-8-10
2
楼
发表于 2008-11-17 08:48
|
显示全部帖子
第一层有点错误,已更改
回复 2楼 的帖子
举个例子吧
set /a n=%random% %% 10
这个随机数 n 就是从 0 - 9 之间的任一个数。
因为是取余运算,如果 %random% 除以 10 是整数,那么余数就是 0;
10 mod 10 = 1 …… 0
30 mod 10 = 3 …… 0
100 mod 10 = 10 …… 0
如果不能整除,那么余数就是 1 - 9;
9 mod 10 = 0 …… 9
18 mod 10 = 1 …… 8
23 mod 10 = 2 …… 3
……
任何数除以 10 取余数都不会等于 10 的,对不对。
所以一个随机数 m 对 n 取余,得到的 n 也是随机数,范围就是从 0 到 n-1。
不知你明白了没有。
TOP
wxcute
发短消息
加为好友
wxcute
(冰疼)
当前离线
UID
3607
帖子
618
精华
0
积分
6100
PB
6073
技术
9
捐助
0
阅读权限
254
在线时间
663 小时
注册时间
2008-8-10
最后登录
2010-2-24
荣誉版主
帖子
618
积分
6100
技术
9
捐助
0
注册时间
2008-8-10
3
楼
发表于 2008-11-17 15:55
|
显示全部帖子
回复 5楼 的帖子
两个例子中不知道你要不要 100 和 75 呢?
就像从 2 到 3 有几个数呢,是两个(有 2、3),3 - 2 = 1 只有 1 个,不对,
应该是 3 - 2 + 1 = 2 有两个才对。
还有我的名字你写错了。
TOP
wxcute
发短消息
加为好友
wxcute
(冰疼)
当前离线
UID
3607
帖子
618
精华
0
积分
6100
PB
6073
技术
9
捐助
0
阅读权限
254
在线时间
663 小时
注册时间
2008-8-10
最后登录
2010-2-24
荣誉版主
帖子
618
积分
6100
技术
9
捐助
0
注册时间
2008-8-10
4
楼
发表于 2009-6-7 19:27
|
显示全部帖子
%0 代表批处理文件自身,意即再执行一次该批处理。最终效果就是不断的生成随机数。
批处理之家论坛官方 QQ 群 :【当前人数/人数上限】【2009-07-08】
群①:43011867(181/200);群②:(暂缺数据);群③:66165582(120/200)。
TOP
返回列表
意见反馈
新手练功
批处理专区: BAT CMD DOS
BAT求助&讨论
BAT教程&资料
BAT原创&转载
BAT新大陆
BAT转载代码
新手练功
出题挑战
有偿求助
第三方命令行
开源原创工具
iBAT
Take Command
其他脚本区
PowerShell求助&讨论
PowerShell教程&资料
PowerShell原创&转载
VBS求助&讨论
JS / JScript / JavaScript
VBS教程&资料
VBS原创&转载
UNIX/Linux Shell
Python
Perl
网络资源区
电脑技术研讨
精品软件交流
论坛事务区
站务交流
意见反馈
论坛公告
版主申请
交换链接
建站杂谈
活动专区
论坛总版规
[收藏此主题]
[关注此主题的新回复]
[通过 QQ、MSN 分享给朋友]