2016-05-25 3 views
4

В среде командной строки есть переменная %random%, которая использует некоторый алгоритм для генерации псевдослучайных чисел.Как генерируются случайные числа командной строки?

Кто-нибудь знает алгоритм, который генерирует эти цифры?

+0

Ваш вопрос не имеет значения. Нет никакого контракта на программирование, поэтому он не определен. –

+0

И что вы хотите с этим сделать? – piyushj

+0

Согласно сайту [this] (http://ss64.com/nt/syntax-random.html): «В случае CMD«% RANDOM% »семя основано на часовом времени начала сеанса CMD Это может быть проблематично при запуске командного файла, если сценарий всегда занимает примерно одно и то же время для запуска до вызова '% RANDOM%', тогда возвращаемый номер всегда будет находиться в пределах небольшого предсказуемого диапазона ». Так что это интересно, так или иначе , – Blorgbeard

ответ

7

Динамическая переменная %random% генерирует случайное число от 0 до 32,767 включительно. Алгоритм которых эти числа генерируются из заключается в следующем:

srand((unsigned)time(NULL)); 

Оказывается, что командный процессор для Windows использует стандартный наивный алгоритм для затравки генератора случайных чисел (цитата из here)

Он выплескивает новый номер каждую секунду из-за времени семени.

Как указал дБемэм, две командные подсказки, открытые в одну секунду, выдают одинаковые точные числа из-за псевдослучайности и принятия во времени в качестве семени.

+0

Вы должны привести свой источник для этой цитаты. – Blorgbeard

+0

Спасибо за указатель, сделают! – Li357

+2

Официально алгоритм, из которого генерируются эти числа, НЕ УКАЗАНА. Вы даже не можете зависеть от этого от версии до версии Windows. –