замените
for /L %%I in (1,1,%RND_TOTAL%) do (
rem compute a random number:
set /A "RND_NUM[%%I]=!RANDOM!%%((RND_MAX-RND_MIN)/RND_INTER+1)*RND_INTER+RND_MIN"
echo !RND_NUM[%%I]!
)
на
for /L %%I in (%rnd_min%,1,%RND_max%) do set "rnd_num{%%I}="
set /a rnd_count=rnd_total
:rnd_loop
rem compute a random number:
set /A "RND_selection=%RANDOM%%%((RND_MAX-RND_MIN)/RND_INTER+1)*RND_INTER+RND_MIN"
if not defined rnd_num{%rnd_selection%} (
SET "rnd_num{%rnd_selection%}=Y"
set /a rnd_num[%count%]=rnd_selection
echo %rnd_selection%
set /a rnd_count-=1
)
if %rnd_count% neq 0 goto rnd_loop
Каждый раз, когда выбор сделан, rnd_num{selectionmade}
установлен на Y
, поэтому, если он выбран снова, это и запись / выход / счет-1-меньше пропускается.