![]() |
Генератор случайных чисел пропускает некоторые значения
Здравствуйте.
В коде: Код:
@echo off Если записать так: Код:
@echo off Что тут не так? P.S. Это только модуль большой программы. И да, сам по себе он выглядит бессмысленно. :tomato2: |
subuday77,
Вот статистика распределения значений при работе %random%. Как видно, %random% работает
Код:
@Echo Off похоже, ограничение кроется в использовании tokens
Код:
@Echo Off Вот рабочий вариант выбора подстроки
Код:
@Echo Off |
Спасибо!
Я решил ещё проще, если не использовать for и прочую приблуду типа токенов, то и CHAR не нужен: Код:
@echo off Но у меня вопрос. Цитата:
|
subuday77, Я и в угаре воскресного дня не мог предположить, что CHAR=1 2 3 4 5 6 7 8 9 10 11 12 13 .... это реальные подстроки, я предполагал, что-то похожее на CHAR=tralala kuku ogogo ..., а цифры перечислены для простоты.
Читайте Shift /?
Изменение содержимого (сдвиг) подставляемых параметров для пакетного файла.
SHIFT [/n] Команда SHIFT при включении расширенной обработки команд поддерживает ключ /n, задающий начало сдвига параметров с номера n, где n может быть от 0 до 9. Например, в следующей команде: SHIFT /2 %3 заменяется на %2, %4 на %3 и т.д., а %0 и %1 остаются без изменений. Call :Substr "N" %R% %CHAR% "N" - имя переменной, куда занесу выбранную подстроку в %R% номер подстроки в строке %CHAR%. По Вашей постановке внутри подстроки нет пробелов, подстроки разделяются пробелами. Давайте для определенности возьмем: Call :Substr "N" 5 1 2 3 4 5 6 7 8 9 10 11 12 13 .... То есть в подпрограмме %1 это "N", %2 это 5 (то есть номер выбираемой подстроки) Я хочу, чтобы на месте %3 была нужная подстрока Поэтому, начиная с 3 места я в цикле сдвигаю аргументы нужное число раз посредством Shift А затем присваиваю переменной (в данном случае после применения %~1 это N) значение аргумента, который сейчас на 3 месте. |
Время: 15:06. |
Время: 15:06.
© OSzone.net 2001-