¿Por qué usas 6 métodos distintos solamente para asignar el valor de una variable?, es demasiado código para llevar a cabo la misma acción, en su lugar puedes asignar 6 variables con nombre dinámico (_1, _2, _3, etc) o mucho mejor, simular un Array:
@Echo Off & Setlocal EnableDelayedExpansion
Set "reasons=Juicio;Apuesta;Error;Compra;Impuestos;Robo"
Set /A "rand=%RANDOM% %%6" & REM Número aleatorio del 0 al 5.
REM si prefieres utilizar un índice de 1, número aleatorio del 1 al 6:
:: REM %RANDOM% <(--- No eliminar esta linea de comentario REM. Es necesaria para inicializar correctamente RANDOM.
:: Call Set /A "rand=%RANDOM% * 6 / 32768 + 1"
Set /A "count=0"
For %%# in ( %reasons% ) Do (
If !count! EQU %rand% (Call :DirtyWork "!count!" "%%~#")
Set /A "count+=1"
)
Pause&Exit /B 0
:DirtyWork :: %1=Index, %2=Reason
Set /A "index=%~1"
Set "reason=%~2"
Echo.Index : %index%
Echo.Reason: %reason%
REM buscar...
GoTo :EOF
Saludos