ya lo he conseguido.
Random existe en batch, pero da un valor entre 1 y 32767, y claro... un dado de 32767 caras no es muy util xDDDDD
Básicamente lo que he hecho es:
@echo off
title Dice Roller
color 2
title Garlimidon's Dice Roller
:title
cls
echo Bienvenido al Dice Roller de Garlimidon
echo Introduce el numero de caras
set /p caras=
echo Introduce el numero de dados
set /p dados=
set /a control=1
set /a bucle=0
set /a divisor=200
goto 1
:1
set /a bucle=%bucle% +%control%
echo resultado %bucle%:
:X
if %caras% LSS 10000 set n= %random%
if %caras% LSS 1000 set /a n= %random% / 10
if %caras% LSS 100 set /a n= %random% / 100
if %caras% LSS 10 set /a n= %random% / 1000
if %n% GTR %caras% goto X
echo %n%
if %bucle%==%dados% goto 2
goto 1
:2
echo Esos son tus resultados, pulsa cualquier tecla para borrarlos
pause > nul
cls
echo 1) Volver al menu
echo 2) Salir
set /p i=
if %i%==1 goto title
if %i%==2 goto exit
:exit
cls
echo Estas seguro de que quieres salir?
echo 1) Salir
echo 2) Volver al menu
set /p exit=
if %exit%==1 exit
if %exit%==2 goto title
Está currado. Lo más importante está en el periodo (:X - goto X)
Básicamente te va a preguntar las caras y el número de dados.
Tras preguntarte todo eso, lanza un valor al azar. Si es menor de 10, lo divide entre 1000 (es decir, si me das 32000 numeros, pasan a ser 32, de modo que va mucho más rápido), y da valores ahí hasta que salga uno menor que caras tenga el dado. Entonces, hace un echo con ese valor, y vuelve a iniciarse, sumando 1 a %bucle%. Cada valor que de, suma 1 a bucle, y cuando %bucle% tenga el mismo valor que %dados%, finaliza.
Además, para que quede más guay, he puesto que me de un "echo resultado %bucle%:" antes del correspondiente resultado. De este modo, cada vez que de un valor, suma uno a bucle, de modo que aparece "resultado 1", "resultado 2" etc etc etc...
Util para rolear xDDDD