CMD/BAT: генерация случайного числа из диапазона значений
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Сообщения 2
1 Тема от kiber_punk 2009-07-05 06:23:43 (изменено: kiber_punk, 2009-07-31 13:04:21)
Тема: CMD/BAT: генерация случайного числа из диапазона значений
Бывают случаи когда необходимо сгенерировать случайное число из определённого диапазона.
Переменная %random% раскрывается в случайное десятичное число от 0 до 32767. На первый взгляд получить от неё что-то полезное не представляется возможным.
Но если задействовать арифметические возможности команды set, то можно получить желаемый результат.
Например, нам необходимо сгенерировать случайное число от 0 до 5:
простой пример «Русской рулетки»:
Для генерации числа из определённого диапазона, следует воспользоваться следующей конструкцией:
MIN — минимальное значение
MAX — максимальное значение
Переменная R принимает случайное значение. Переменные MIN и MAX определяют при этом нижнюю и верхнюю границу желаемого числового диапазона (MIN П ример генератора случайных чисел от -50 до 50:
Вынесем генератор в отдельную функцию:
Тогда обращение к функции в скрипте будет выглядеть, примерно, так:
-10 — минимальное значение,
10 — максимальное значение,
n — возвращаемая переменная содержащая случайное число.
Итак, многообразному применению случайных чисел в командных файлах больше ничто не препятствует. Среди возможных применений — управление итерациями, ветвление для перехода на заданные ветви или файлы, а также параметризация вызовов программ.
2 Ответ от kiber_punk 2009-07-05 06:35:09
Re: CMD/BAT: генерация случайного числа из диапазона значений
Случайные числа можно использовать и в качестве указателей на элементы (от 1 до N) заранее определенного списка, как это делается в команде for /f. Следующий пример иллюстрирует генерирование 26-значного шестнадцатеричного кода, который может пригодиться при 128-разрядном шифровании WEP в беспроводных локальных сетях:
Переменная I определяет длину выдаваемого кода, а значение переменной N должно совпадать с количеством элементов списка CHAR. В принципе представленной программой можно воспользоваться для генерирования случайных паролей. Однако, как видно из параметров цикла for /f, количество элементов списка ограничено числом 31, этого достаточно для стандартного алфавита, но никакой гибкости применения практически не обеспечивает.
Больше возможностей предлагает операция над переменными а-ля set VAR=%VAR:
10,5%, при помощи которой из заданной переменной можно извлечь некоторую подстроку в соответствии с величиной смещения («10») и длиной («5»). Указанное смещение возможно задать и случайным образом. Ниже приведен пример, показывающий, как в символьном массиве (CHAR) определяются доступные для генерирования пароля (PW) символы, и выдается случайный пароль длиной в восемь символов:
Windows cmd random number
Два миллиона записей, это на несколько часов, можете попробовать если есть время, исправьте диапазон на нужный: » |