Ламерский вопрос про random

отредактировано 06:41 Раздел: FastScript
Надо для FR3 написать скрипт по генерации пароля из набора символов, но с FS я не знаком, отсюда трудности. ПОдскажите пожалуйста.

Комментарии

  • отредактировано 06:41
    Для начала напишите такую функцию в Delphi. Думаю перенести ее в FS будет не сложно.
  • отредактировано 06:41
    Не принимайте меня уж совсем за ламера ;)
    В дельфи это просто, здесь возникают вопросы, например почему random возвращает extended, как ограничить диапазон random+некоторые несовместимости типов. Можно конечно поизвращаться, получать ПСП из даты/времени, но зачем раз есть функция.
    Просто с FS раньше не работал, потому спросил.
  • отредактировано 06:41
    написал:
    например почему random возвращает extended
    А что вы ждете?
    написал:
    как ограничить диапазон random+некоторые несовместимости типов
    Не очень то я вас понимаю. Приведите конкретные примеры.
  • отредактировано 06:41
    Блин, Ну как реализуется простейший генератор паролей(ПСП)
    написал:
    function GetRandomString(NumChar: cardinal): string;
    const  CharMap='qwertzuiopasdfghjklyxcvbnmQWERTZUIOPASDFGHJKLYXCVBNM1234567890';
    var
      i: integer;
      MaxChar: cardinal;
    begin
      randomize;
      MaxChar := length(CharMap) - 1;
      for i := 1 to NumChar do
        Result := result + CharMap[Random(maxChar) + 1];
    end;
    1. Мы должны иметь функцию, возвращающее случайное значение из определенного диапазона.
    2. Функция должна возвращать целое значение.
  • отредактировано 06:41
    написал:
    2. Функция должна возвращать целое значение.
    А если не целое, то уже всё, никак?

    CharMap[Round(Random * maxChar + 1)];
  • отредактировано February 2005
    Вы пожалуйста давайте ответ в комплексе. Я уже говорил, что МОЖНО извратиться и эмулировать работу функции random. Однако был задан четкий вопрос, как реализовать функцию генерации ПСП (случайной строки, пароля).
    ИМХО в таком виде функция random для прикладных целей не нужна.
    Никто не даст гарантию, что она попадет в нужный диапазон.
  • отредактировано 06:41
    Читаем хелп по функции Random:
    написал:
    Random returns a random number within the range 0 <= X < Range. If Range is not specified, the result is a real-type random number within the range
    0 <= X < 1.
    В FastScript'е реализован второй вариант. Т.е. вызов без параметров.
    Надеюсь теперь понятно что Round(Random * maxChar + 1) всегда вернет случайное число в нужном диапазоне (от 0 до maxChar)
    написал:
    Однако был задан четкий вопрос, как реализовать функцию генерации ПСП (случайной строки, пароля).
    Ваш пример с моей поправкой будет делать то что вам надо.
  • отредактировано 06:41
    Спасибо, теперь все ясно просто неочевидно было что рандом возвращает 0<x<1.
  • отредактировано 06:41
    Linco, "и не зачем так олать" © Кролик
    ЗЫ. оффтоп

Оставить комментарий

Многофункциональный текстовый редактор. Чтобы отредактировать стиль параграфа, нажмите TAB, чтобы перейти к меню абзаца. Там вы можете выбрать стиль. По умолчанию не выбран ни один стиль. Когда вы выберете текст, появится встроенное меню форматирования. Нажмите TAB, чтобы войти в него. Некоторые элементы, такие как многофункциональные вставки ссылок, картинок, индикаторов загрузки и сообщений об ошибок могут быть вставлены в редактор. Вы можете перемещаться по ним, используя стрелки внутри редактора и удалять с помощью клавиш delete или backspace.