[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
  1. @echo off
  2. set /a "x=%random%%%10000"
  3. if %x% lss 1000 ( set /a "x+=1000" )
  4. echo %x%
复制代码

TOP

关于楼主这个题目,目前为止(竟然3年多了)几乎没有人做到楼主的第2个要求,正如楼主在10楼所说,“对于多个随机数,没有进行重复性判断(尽管这种几率很小)”。我想,如果把这个题目的要求1改一下,生成100个3位数或者10个2位数,这样重复的几率就很大了,必须考虑判断重复性。

下面是俺写的一段关于判断重复性的代码:
  1. set "AllNum="
  2. :LOOP
  3. 产生一个满足要求1的随机数num的部分代码略
  4. REM 判断重复性
  5. if not defined AllNum (
  6. set "AllNum=%num%"
  7. set /a n=1
  8. goto :LOOP
  9. )
  10. set "temp=%AllNum%"
  11. set "temp=!temp:%num%=!
  12. REM 如果%AllNum%去掉%num%前后是同一个字符串,
  13. REM 则说明%num%与先前产生的随机数不重复。
  14. if "%temp%"=="%AllNum%" (
  15. set "AllNum=%AllNum%,%num%"
  16. set /a n+=1
  17. if !n! geq 4 goto :LIST
  18. )
  19. goto :LOOP
  20. :LIST
  21. echo %AllNum%
复制代码

[ 本帖最后由 mac007cn 于 2011-1-13 10:04 编辑 ]

TOP

返回列表