Board logo

标题: [文件操作] [已解决]批处理如何控制指定随机数产生的个数和位数? [打印本页]

作者: playinthesky    时间: 2011-9-11 21:18     标题: [已解决]批处理如何控制指定随机数产生的个数和位数?

因为需要生成的个数,每个都不同,我写了代码,但是达不到效果,请大家帮助。
  1. @echo off&setlocal EnableDelayedExpansion
  2. set/a m0=%random:~0,2%*%random:~0,3%
  3. for /l %%a in (1,1,10) do (
  4.      set /a r=!m0!
  5.      echo.
  6.    echo %%a !r!
  7.   )
  8. pause
复制代码
生成结果为:
  1. 1 16380
  2. 2 16380
  3. 3 16380
  4. 4 16380
  5. 5 16380
  6. 6 16380
  7. 7 16380
  8. 8 16380
  9. 9 16380
  10. 10 16380
  11. 请按任意键继续. . .
复制代码
想每次产生的数字都不同,而不是一样的,并且能否截断超出或者如果位数不到自动过滤,

我是制定生成5位数的,如果因为%random:~0,2%*%random:~0,3%相乘的数字超过5位,比方乘出来变成了 123456 ,那就自动剔除,让程序再生成一个符合条件,比方相乘出1234.也是剔除,不知批处理可否做到?


理想效果是:
  1. 1 43456
  2. 2 73453
  3. 3 87216
  4. 4 45120
  5. 5 01145
  6. 6 78545
  7. 7 84462
  8. 8 45661
  9. 9 16380
  10. 10 91120
  11. 请按任意键继续. . .
复制代码
意思就是要每个都不一样的?帮帮我吧,谢谢大家!!!
作者: awk    时间: 2011-9-11 21:39

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /l %%a in (1,1,10) do (
  4.     set n=
  5.     for /l %%b in (1,1,5) do (
  6.         set n=!n!!random:~0,1!
  7.     )
  8.     echo,!n!
  9. )
  10. pause
复制代码

作者: wc726842270    时间: 2011-9-11 22:41

set _a=0123456789,之后截取不行么?
作者: weichenxiehou    时间: 2011-9-11 22:57

本帖最后由 weichenxiehou 于 2011-9-11 23:00 编辑
  1. @echo off&setlocal enabledelayedexpansion
  2. for /l %%i in (1 1 10) do (
  3.   set/a num=10000+!random!
  4.   echo,%%i:!num!
  5. )
复制代码

作者: playinthesky    时间: 2011-9-11 23:22

回复 3# wc726842270

随机数指定了位数之后,比方指定成两位,依旧会出现,1,2,之类的数字的,只是概率相对较少吧。
作者: wangqi0077    时间: 2011-9-13 17:17

想要生成几个..每个随机数都用个位数来替代就好了吧..每位数从0-9.随机生成..
作者: Hello123World    时间: 2011-9-14 17:57

  1. @echo off&setlocal EnableDelayedExpansion
  2. for /l %%a in (1,1,10) do (
  3. set m0=!random:~0,2!!random:~0,3!
  4.     echo.
  5. echo %%a !m0!
  6.   )
  7. pause
复制代码





欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2