关于楼主这个题目,目前为止(竟然3年多了)几乎没有人做到楼主的第2个要求,正如楼主在10楼所说,“对于多个随机数,没有进行重复性判断(尽管这种几率很小)”。我想,如果把这个题目的要求1改一下,生成100个3位数或者10个2位数,这样重复的几率就很大了,必须考虑判断重复性。
下面是俺写的一段关于判断重复性的代码:- set "AllNum="
- :LOOP
- 产生一个满足要求1的随机数num的部分代码略
- REM 判断重复性
- if not defined AllNum (
- set "AllNum=%num%"
- set /a n=1
- goto :LOOP
- )
- set "temp=%AllNum%"
- set "temp=!temp:%num%=!
- REM 如果%AllNum%去掉%num%前后是同一个字符串,
- REM 则说明%num%与先前产生的随机数不重复。
- if "%temp%"=="%AllNum%" (
- set "AllNum=%AllNum%,%num%"
- set /a n+=1
- if !n! geq 4 goto :LIST
- )
- goto :LOOP
-
- :LIST
- echo %AllNum%
复制代码
[ 本帖最后由 mac007cn 于 2011-1-13 10:04 编辑 ] |