samedi 21 août 2021

how to random array without duplicate using batch

Im using this batch for random test1-test3 without duplicate but not working

@echo off
setlocal EnableExtensions
setlocal EnableDelayedExpansion
set /A "RND_TOTAL=3, FLAG_DUP=0"
set /A "RND_MIN=1, RND_MAX=3, RND_INTER=1"
for /L %%I in (1,1,%RND_TOTAL%) do (
    call :SUB %%I
    SET /A R=!RND_NUM[%%I]!
    SET LINE[1]=TEST1
    SET LINE[2]=TEST2
    SET LINE[3]=TEST2
    echo !LINE[%R%]!
    pause
)
endlocal
exit /B
:SUB
set /A "RND_COUNT=%1-1"
:LOOP
set /A "RND_NUM[%1]=!RANDOM!%%((RND_MAX-RND_MIN)/RND_INTER+1)*RND_INTER+RND_MIN"
if %FLAG_DUP% EQU 0 (
    for /L %%I in (1,1,%RND_COUNT%) do (
        if !RND_NUM[%1]! EQU !RND_NUM[%%I]! (
            goto :LOOP
        )
    )
)
exit /B

I get the following output:

echo off

echo off

echo off



Aucun commentaire:

Enregistrer un commentaire