2015-05-29 4 views
0

Существует простой способ создания генератора чисел.
Но я просто хочу сгенерированные числа, чтобы быть 1 - 4Генератор чисел 1-4 | Пакет

Следующая программа занимает слишком много времени, чтобы получить выходные

@echo off 
:RUN 
set /a Num=%random% 
if %num% LEQ 4 echo %num% 
goto :RUN 

Он работает% случайный% до тех пор, пока он получает меньше, чем 4, который может быть какое-то время.

+0

Посмотрите на выход для 'for /?' - в частности раздел о 'for/L'. Или вам нужен бесконечный цикл чисел от 1 до 4? – SomethingDark

+0

'set/a NumBetween1and4 =% random% %% 4 + 1' – Aacini

+0

Возможный дубликат [Как использовать случайный скрипт BATCH?] (Http://stackoverflow.com/questions/5777400/how-to-use-random -в-пакетный сценарий) – indiv

ответ

0

Вы можете замаскировать биты в случайных величинах (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" 

% оператора (внутри партии файлы % должны быть экранированы, поэтому он становится %%) имеет более высокий приоритет, чем оператор +, поэтому здесь скобки не нужны.

Смежные вопросы