Вы можете замаскировать биты в случайных величинах (And
операции = &
оператора), чтобы получить два нижние, получая число в диапазоне [0,3] и добавлением 1 для адаптации к указанному диапазону
set /a "num=(%random% & 3) + 1"
Или, как генерируется случайное значение использует 15 битов, она может быть смещена, чтобы получить только два старших бита
set /a "num=(%random% >> 13) + 1"
скобки необходимы в обоих случаях, поскольку +
оператор имеет более высокий приоритет, чем &
или >>
операторов.
Можно также использовать Mod
операцию (%
оператор), чтобы получить остаток от деления на 4, также получают число в диапазоне [0,3]
set /a "num=%random% %% 4 + 1"
%
оператора (внутри партии файлы %
должны быть экранированы, поэтому он становится %%
) имеет более высокий приоритет, чем оператор +
, поэтому здесь скобки не нужны.
Посмотрите на выход для 'for /?' - в частности раздел о 'for/L'. Или вам нужен бесконечный цикл чисел от 1 до 4? – SomethingDark
'set/a NumBetween1and4 =% random% %% 4 + 1' – Aacini
Возможный дубликат [Как использовать случайный скрипт BATCH?] (Http://stackoverflow.com/questions/5777400/how-to-use-random -в-пакетный сценарий) – indiv