На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! ПРАВИЛА РАЗДЕЛА · FAQ раздела Delphi · Книги по Delphi
Пожалуйста, выделяйте текст программы тегом [сode=pas] ... [/сode]. Для этого используйте кнопку [code=pas] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Дельфи/Паскаля.
Следующие вопросы задаются очень часто, подробно разобраны в FAQ и, поэтому, будут безжалостно удаляться:
1. Преобразовать переменную типа String в тип PChar (PAnsiChar)
2. Как "свернуть" программу в трей.
3. Как "скрыться" от Ctrl + Alt + Del (заблокировать их и т.п.)
4. Как прочитать список файлов, поддиректорий в директории?
5. Как запустить программу/файл?
... (продолжение следует) ...

Вопросы, подробно описанные во встроенной справочной системе Delphi, не несут полезной тематической нагрузки, поэтому будут удаляться.
Запрещается создавать темы с просьбой выполнить какую-то работу за автора темы. Форум является средством общения и общего поиска решения. Вашу работу за Вас никто выполнять не будет.


Внимание
Попытки открытия обсуждений реализации вредоносного ПО, включая различные интерпретации спам-ботов, наказывается предупреждением на 30 дней.
Повторная попытка - 60 дней. Последующие попытки бан.
Мат в разделе - бан на три месяца...
Модераторы: jack128, D[u]fa, Shaggy, Rouse_
  
> Эмулятор Rаndom Delphi
    На Делфи не пишу. Сделал эмулятор ГСЧ этого языка. В сети нашёл вывод первых 4-х чисел для проверки со своим ГСЧ:

    Цитата
    То есть инициализация ГПСЧ нулем и вывод 4 последовательных результатов. По ним мы и будем определять что перед нами.
    Delphi: - 0, 134775813(0x8088405), 3698175006, 870078619 - старый добрый LCRNG из функции RandInt.


    Мой ГСЧ выдаёт:
    1
    134775814
    3698175007
    870078620

    т.е. больше на 1. По формуле ГСЧ имеем:
    nextseed = (oldseed * 134775813 + 1) Mod 2 ^ 32
    Для числа на вывод берутся биты 63...32 nextseed * Range

    Считаем:
    nextseed = 0
    nextseed = (0 * 134775813 + 1) = 1
    nextseed = (1 * 134775813 + 1) = 134775814


    т.к. Делфи под рукой нет, не могу проверить, откуда автор статьи из инета взял 0, 134775813, 3698175006, 870078619 ...

    И ещё вопрос - вызов ф-и Random(Range) (или как она у вас называется) без указания Range в Делфи, как я понял, происходит с Range=4294967296?
    Сообщение отредактировано: BlackSun -
      Цитата BlackSun @
      И ещё вопрос - вызов ф-и Random(Range) (или как она у вас называется) без указания Range в Делфи, как я понял, происходит с Range=4294967296?

      Нет. Random без параметра возвратит число в диапазоне [0;1).
      Прикреплённый файлПрикреплённый файл000389.png (54,12 Кбайт, скачиваний: 396)
      Сообщение отредактировано: Verevkin -
        Verevkin, это Делфи 7?
        Сообщение отредактировано: BlackSun -
          Ребята, напишите какая версия Делфи выдаёт последовательность, что показал Verevkin?
            Нет смысла говорить о последовательности без указания диапазона.
            Verevkin привёл для Random(maxint)

            В свежих версиях:
            ExpandedWrap disabled
              function DefaultRandom32: UInt32;
              begin
                Result := UInt32(RandSeed) * $08088405 + 1;
                RandSeed := Result
              end;
               
              function Random(const ARange: Integer): Integer;
              var
                Temp: UInt32;
              begin
                Temp := Random32Proc;
                Result := (UInt64(UInt32(ARange)) * UInt64(Temp)) shr 32;
              end;
              что имеется ввиду под свежими версиями?
                Приведённый код из 10.3 Rio
                В старых версиях возможности подменить функцию генерации не было, но
                всегда использовался тот же самый ЛКГ с $08088405
                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                0 пользователей:


                Рейтинг@Mail.ru
                [ Script execution time: 0,0464 ]   [ 17 queries used ]   [ Generated: 18.04.24, 00:43 GMT ]