correct me if I'm wrong, but since batch is linear in its processing, you don't need anything to do that, you just need to sequence the IF statements correctly.
e.g.
REM set num
set /a num=%random%*100/32768+1
REM argue num value
if '%num%' LSS '21' goto result
if '%num%' LSS '70' goto result
if '%num%' LSS '96' goto result
if '%num%' LSS 101 goto result
goto error
REM check result
:result
echo your random number is: %num%
pause > nul
REM just in case
:error
cls
echo there has been an error.
Since each IF is arguing "less than (as exact value)" and it has a GOTO as the result, so it will GOTO result if in range, otherwise go on to the next argument. If a value passes through <21, then it's bound to hit one of the following segments...
Anyway... not sure if that logic made sense... lol