本帖最后由 qixiaobin0715 于 2023-9-5 13:13 编辑
回复 23# pd1
以下代码根据你在23楼的思路写的,由于比较匆忙,看起来不是很明晰,未考虑效率问题,测试约1分钟左右。简要说明如下:
1.每次循环需要得到100个给定字符使用次数。(第17行)
2.判断给定的字符使用次数是否达到上限,若达到上限则忽略,否则按正常方法设置变量,以便继续使用。(第9行)
3.判断给定的字符尚可使用的次数是否达到剩余行数,若是,则本次优先使用(通过在未达到剩余行数上限的字符的变量名前加上字母,使达到剩余行数的字符变量在后面的循环中优先排在前面)。(第19、6-10行) | @echo off | | setlocal enabledelayedexpansion | | (for /l %%i in (1,1,1000) do ( | | for /l %%j in (0,1,99) do ( | | set num=0%%j | | if !@%%j! equ 0 ( | | set _!random!_%%j=!num:~-2! | | ) else ( | | if !#%%j! neq 500 set _a!random!_%%j=!num:~-2! | | ) | | ) | | set n=0 | | for /f "tokens=1-3 delims==_" %%a in ('set _') do ( | | set /a n+=1 | | if !n! leq 50 ( | | set str=!str! %%c | | set /a #%%b+=1 | | ) | | set /a @%%b=1000-%%i-500+#%%b | | set _%%a_%%b= | | ) | | echo,!str! | | set str= | | ))>1.txt | | pauseCOPY |
|