标题: [文件操作] [已解决]批处理如何控制指定随机数产生的个数和位数? [打印本页]
作者: playinthesky 时间: 2011-9-11 21:18 标题: [已解决]批处理如何控制指定随机数产生的个数和位数?
因为需要生成的个数,每个都不同,我写了代码,但是达不到效果,请大家帮助。- @echo off&setlocal EnableDelayedExpansion
- set/a m0=%random:~0,2%*%random:~0,3%
- for /l %%a in (1,1,10) do (
- set /a r=!m0!
- echo.
- echo %%a !r!
- )
- pause
复制代码
生成结果为:- 1 16380
-
- 2 16380
-
- 3 16380
-
- 4 16380
-
- 5 16380
-
- 6 16380
-
- 7 16380
-
- 8 16380
-
- 9 16380
-
- 10 16380
- 请按任意键继续. . .
复制代码
想每次产生的数字都不同,而不是一样的,并且能否截断超出或者如果位数不到自动过滤,
我是制定生成5位数的,如果因为%random:~0,2%*%random:~0,3%相乘的数字超过5位,比方乘出来变成了 123456 ,那就自动剔除,让程序再生成一个符合条件,比方相乘出1234.也是剔除,不知批处理可否做到?
理想效果是:- 1 43456
-
- 2 73453
-
- 3 87216
-
- 4 45120
-
- 5 01145
-
- 6 78545
-
- 7 84462
-
- 8 45661
-
- 9 16380
-
- 10 91120
- 请按任意键继续. . .
复制代码
意思就是要每个都不一样的?帮帮我吧,谢谢大家!!!
作者: awk 时间: 2011-9-11 21:39
- @echo off
- setlocal enabledelayedexpansion
- for /l %%a in (1,1,10) do (
- set n=
- for /l %%b in (1,1,5) do (
- set n=!n!!random:~0,1!
- )
- echo,!n!
- )
- pause
复制代码
作者: wc726842270 时间: 2011-9-11 22:41
set _a=0123456789,之后截取不行么?
作者: weichenxiehou 时间: 2011-9-11 22:57
本帖最后由 weichenxiehou 于 2011-9-11 23:00 编辑
- @echo off&setlocal enabledelayedexpansion
- for /l %%i in (1 1 10) do (
- set/a num=10000+!random!
- echo,%%i:!num!
- )
复制代码
作者: playinthesky 时间: 2011-9-11 23:22
回复 3# wc726842270
随机数指定了位数之后,比方指定成两位,依旧会出现,1,2,之类的数字的,只是概率相对较少吧。
作者: wangqi0077 时间: 2011-9-13 17:17
想要生成几个..每个随机数都用个位数来替代就好了吧..每位数从0-9.随机生成..
作者: Hello123World 时间: 2011-9-14 17:57
- @echo off&setlocal EnableDelayedExpansion
- for /l %%a in (1,1,10) do (
- set m0=!random:~0,2!!random:~0,3!
- echo.
- echo %%a !m0!
- )
- pause
复制代码
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |