В среде командной строки есть переменная %random%
, которая использует некоторый алгоритм для генерации псевдослучайных чисел.Как генерируются случайные числа командной строки?
Кто-нибудь знает алгоритм, который генерирует эти цифры?
В среде командной строки есть переменная %random%
, которая использует некоторый алгоритм для генерации псевдослучайных чисел.Как генерируются случайные числа командной строки?
Кто-нибудь знает алгоритм, который генерирует эти цифры?
Динамическая переменная %random%
генерирует случайное число от 0 до 32,767 включительно. Алгоритм которых эти числа генерируются из заключается в следующем:
srand((unsigned)time(NULL));
Оказывается, что командный процессор для Windows использует стандартный наивный алгоритм для затравки генератора случайных чисел (цитата из here)
Он выплескивает новый номер каждую секунду из-за времени семени.
Как указал дБемэм, две командные подсказки, открытые в одну секунду, выдают одинаковые точные числа из-за псевдослучайности и принятия во времени в качестве семени.
Вы должны привести свой источник для этой цитаты. – Blorgbeard
Спасибо за указатель, сделают! – Li357
Официально алгоритм, из которого генерируются эти числа, НЕ УКАЗАНА. Вы даже не можете зависеть от этого от версии до версии Windows. –
Ваш вопрос не имеет значения. Нет никакого контракта на программирование, поэтому он не определен. –
И что вы хотите с этим сделать? – piyushj
Согласно сайту [this] (http://ss64.com/nt/syntax-random.html): «В случае CMD«% RANDOM% »семя основано на часовом времени начала сеанса CMD Это может быть проблематично при запуске командного файла, если сценарий всегда занимает примерно одно и то же время для запуска до вызова '% RANDOM%', тогда возвращаемый номер всегда будет находиться в пределах небольшого предсказуемого диапазона ». Так что это интересно, так или иначе , – Blorgbeard