|
|
我们常用的随机数由random产生。
%RANDOM% ,系统 返回 0 到 32767 之间的任意十进制数字。由 Cmd.exe 生成。
其实,要求没那么严格的,使用time也能提取 0 到 100 之间的随机数。(未验证或许是0-99)
1、使用毫秒生产随机数: %time:~-2,2%
如果提取随机数的频率高,即两次以上提取随机数的时间间隔很短的话,比如少于0.1秒,就容易露出破绽。
2、使用秒和毫秒生成随机数:time:~-5,2%
不过这个数字比毫秒产生的数值要稳定,并且只能是 0 到 60之间的数字。随机数效果不是很明显。
3、可以使用秒与毫秒的组合:set tm=%time:~-5,2%%time:~-2,2%
或者稍加加工:set /a tm=%time:~-5,2%%time:~-2,2%
4、使用毫秒与random组合:set tm=time:~-2,2%%random%
也可以加工:set /a tm=%time:~-2,2%+%random%
5、获取 0 到 9 之间的随机数:%time:~-1,1%
取得的结果少于10时,会在前面添加一个0,变成01、02、03……这个用来提取序号或许不错,不过难在时间一直都在变化之中,并不会在你使用的时候以01开始给你。
6、获取 0 到 10 之间的随机数:if "%time:~-2,2%" lss "11" set tm=%time:~-2,2% (未验证)
7、获取 0 到 18 之间的随机数:set /a tm=%time:~-1,1%+%random:~-1,1%
8、获取 0 到 108 之间的随机数:set /a tm=%time:~-2,2%+%random:~-1,1%
9、获取 0 到 198 之间的随机数:set /a tm=%time:~-2,2%+%random:~-2,2%
使用%time%提取随机数可能会增加“0”和“00”出现的机率。使用%random%也可能会出现“0”,但不好使用%random:~-2,2%同时提取少于10和大于10的数字,而%time:~-2,2%可以解决这个问题。在这个基础上,还可以组成更好的组合以便同时获取更多的随机数。
[ 本帖最后由 cjiabing 于 2010-11-24 11:43 编辑 ] |
|