- @echo off & SetLocal EnableDelayedExpansion
- set /a n=0,X=1,B_60=0,C_49=0
- :loop
- for %%a in (A B C D) do (
- if "!_%%a!" neq "1" (
- set /a %%a=!random!%%100+1
- if defined %%a_!%%a! (set repeat=1) else set /a %%a_!%%a!=0,_%%a=1
- )
- )
- if "%repeat%"=="1" set repeat=0 & goto loop
- set "X-%X%=!X-%X%!A-%a% B-%B% C-%C% D-%D% "
- set /a n+=1,_A=0,_B=0,_C=0,_D=0,1/(n%%10) 2>nul || set /a X+=1
- if %n%==30 set "X-3=!X-3:B-%B%=B-60!" & set "B_%B%="
- if %n%==80 set "X-8=!X-8:C-%C%=C-49!" & set "C_%C%="
- if %n% lss 100 goto loop
- for /l %%a in (1 1 10) do echo X-%%a: & echo !X-%%a! & pause & cls
复制代码 思路:
按班级顺序分配,学生是随机的。
一个班 10 次 goto,每次 goto 生成四个随机数(优等生、高等生、中等生、差等生),如果某个随机数定义过,则重复这次 goto。
原意是 100 次 goto,但不可能没有重复随机数...我计算了下,要 goto 一千次左右...
[ 本帖最后由 iti50i68j2h0 于 2010-6-28 22:04 编辑 ] |