Wie erstellt man in einer Batch-Datei einen Zufallsgenerator?

2 Antworten

@echo off

set name[0]=Peter
set name[1]=Paul
set name[2]=Mary
set name[3]=Alice
set name[4]=Bob

:loop

REM 5 ist die Anzahl der möglichen Namen
set /a rand=(%RANDOM%*5/32768)

call echo %%name[%rand%]%%

pause
goto loop
BeBoobBall 
Fragesteller
 19.02.2019, 19:37

Was muss ich hinschreiben, wenn ich nicht will das (vorgegebenes Beispiel von dir-->) Namen doppelt angezeigt werden?

0
acdxx  20.02.2019, 08:27
@BeBoobBall
@echo off

set name[0]=Peter
set name[1]=Paul
set name[2]=Mary
set name[3]=Alice
set name[4]=Bob

set count=5
set done=0


:loop

set /a rand=(%RANDOM%*%count%/32768)

for /f %%i in ('call echo %%name[%rand%]%%') do set temp=%%i

if %temp% == -1 goto loop

echo %temp%
set /a name[%rand%]=-1
set /a done=done+1

if %done% == %count% goto exit

pause
goto loop


:exit

echo Alle Namen wurden angezeigt
pause
exit

Die Zufallszahlen sind allerdings nicht ganz astrein. Es fängt fast immer mit demselben Namen an.

1
@echo off
SET MIN=1
SET MAX=3
SET /a Z=%MIN%+(%MAX%-%MIN%+1)*%random%/32768
echo Folgendes ist jetzt Zufall:
echo.
if "%z%"=="1" echo Paul
if "%z%"=="2" echo Olaf
if "%z%"=="3" echo Max

Bei dem Script wird ein zufall von 1 bis 3 erzeugt (oben Min und Max) dann nur noch geschaut welchen Wert er hat