Adventurer #13
31 марта 2002

Обмен опытом - ненаучный алгоритм получения Случайных Чисел (RND).

<b>Обмен опытом</b> - ненаучный алгоритм получения Случайных Чисел (RND).
     (C) Research/Volgasoft

               Научное RND

     В  уважаемом  мною  журнале Spectrum
Expert  были выложены как минимум все ма-
териалы  для  самостоятельного  написания
проволочного и даже залитого проволочного
движка  ELITE. Теперь мы научимся генери-
ровать  псевдослучайные числа, а следова-
тельно научимся писать все то, что проис-
ходит  внутри  станции (карта галактики и
названия  планет  например:).  Достаточно
будет наскребать скромный материальчик по
подобию  искусственного интеллекта и каж-
дый сможет написать элиту за два месяца:

     Основных методов генерации случайных
чисел существует два (а ваще - один):
     1)  сдвиг  числа  с плавающей точкой
(иногда с подмешиванием сдвинутых копий);
     2)  папский  метод :) Тык вот, расс-
мотрим папский метод:

N[i+1]=mod (A*N[i], Z); - где mod = остаток от деления
Иными словами: следующее число=остаток от деления некой конс-
танты А, умноженной на предыдущее число и константы Z.
Вот и все!

На пальчиковом ассемблере:
constA  EQU 137
;Z      EQU 8
N       EQU 3 ; начальное число

        LD IX, array;   адрес массива
        LD (IX), N
        LD DE, constA;    константа А
        LD B,32;        сколько чисел генерировать
LL1
        LD L,(IX)
        LD H,0
        PUSH DE
        CALL MUL_HL_DE;  "A*N[i]"
        POP DE
        LD (IX+1), L; остаток от деления на 256, он же младший байт
        INC IX
        DJNZ LL1

;готово

     Область  значений генерируемых чисел
зависит  от  констант.  В  примере Z=256,
A=137.  Значения  Z  - выбирайте по вкусу
(на  самом  деле  в  примере не мешало бы
вначале   сдвинуть   результат  умножения
вправо  на  один бит, а потом брать оста-
ток).  Значения А подбираются таким обра-
зом,  чтобы  распределение  было близко к
равномерному.  Как  правило берутся <кри-
вые>  числа (забыл как их в школе звали -
которые  делятся сами на себя и на едини-
цу) такие, как 5, 7,13, 17, 19, 23 и т.д.
Следите, чтобы не было нолей, иначе гене-
ратор  встанет.  Как я уже говорил, чтобы
числа получались не только четные или не-
четные - поиграйте со сдвигами.

     Чтобы  генерировать  числа не только
уложенные  в  заданное  число  бит  (8  -
1..255, 7 - 1..127) придется гробить нес-
колько  чисел  или использовать несколько
генераторов, пример для чисел 1..191:

        LD A,n1
        AND A,63
        LD C,A
        LD A,n2
        AND A,127
        ADD A,C
        LD (RESULT),A

     Ну  а как генерировать названия пла-
нет  в Элите - знают все - берем, состав-
ляем  массив  из  слогов (по две буквы) и
заводим генератор - одно число соответст-
вует одному слогу; и катаем двухбуквенные
планеты, четырех, шести:

     Кстати,  наподобие  алгоритм исполь-
зуется  при  подсчете контрольных сумм, в
том числе и у той же ВГ93.

     Ну  вот и все: Как тока расскажу про
ИИ (или кто-нибудь расскажет на страницах
Adventurer 'a) с  вас  с каждого по элите
:))).




Другие статьи номера:

От авторов - help: описание оболочки журнала.

От авторов - о содержании нового номера журнала.

От авторов - Forever young, или Спектрум в новом тысячелетии. Призыв Jam/XPJ к спасению журнала ZX Power.

От авторов - авторы журнала.

Презентация - новая игра от Studio Stall - Открывашка.

Презентация - новый редактор шрифтов Hewly Font Editor.

Презентация - новая версия музыкального редактора Sound Tracker Pro.

Презентация - программа для оптимизации черно-белых картинок сконверченных с PC.

Презентация - редактор ASCII графики для каталогов в TR-DOS.

Презентация - "Bard's Tale Merger Programm" - программа для работы с отгрузками из игры Bard's Tale.

Интерфейс - Новости от: Placebo, Brain- wave, Phantom Family, Volga Soft, Studio Stall, Gogin, Anarchia, Image Crew, Hackerz' Design Software, Петерс+, Fatal Snipe, Ellipse.

Интерфейс - посмотрим какие тусни намечаются для спекки фриков втечение года: Forever 3, ASCII^02, 2nd International Sinclair Sam days, Millenium 1902, Twilight Demoparty 2002, Syndeecate Demoparty 2002, Paradox 2002, CaFe 2002, Chaos Constructions 2002.

Интерфейс - письма читалей: NoViSeT/Brutal Creators, Di/LSg, Moroz1999, Shame/Madness Technology, Cannibal/Techno Lab.

Интерфейс - "за базар ответишь!" русский язык настолько "велик и могуч", что грамотно пользоваться им, к сожалению, дано далеко не всем.

Интерфейс - обзор Windows подобных оболочек и систем на ZX Spectrum.

Интерфейс - Город Дзержинск и его СПЕКТРУМовские обитатели.

Обмен опытом - Как написать 3D игру типа DOOM.

Обмен опытом - Метод Floyd-Steinberg для конвертации картинок из большего числа цветов в меньший.

Обмен опытом - ненаучный алгоритм получения Случайных Чисел (RND).

Обмен опытом - прямое программирование General Sound.

Обмен опытом - работа с западными дисковыми системами MDOS и MD02.

Chaos Construction 2001 - интервью с Raid.

Chaos Construction 2001 - интервью с Stanly/Studio Stall.

Chaos Construction 2001 - интервью с Gogin (Hacker Smir).

Chaos Construction 2001 - интервью с Constellation Team: Screamer, Kot, Justinas.

Chaos Construction 2001 - интервью с EYE-Q: Organism, Time Keeper, Mr. Wizard.

Chaos Construction 2001 - интервью с Justionas/Constellation.

Chaos Construction 2001 - интервью с московским кодером Asman/Proxium.

Chaos Construction 2001 - интевью с Vivid, Megus, Tiggr из Brain-Wave.

Chaos Construction 2001 - интервью с Stingrey и Steep из Ижевска.

Chaos Construction 2001 - интервью с амижником и организатором CC - Big Black.

Chaos Construction 2001 - интервью с кодером из Ульяновска Faster/TNL.

Chaos Construction 2001 - интервью с Cyberfreak (mooh).

Chaos Construction 2001 - интервью с минским спектрумистом Equator/PHD.

Chaos Construction 2001 - мини интервью с Kano.

Chaos Construction 2001 - эпический спор: Vivid VS Sairoos, Chanks VS Multicolor, Dogma VS Triptomine Dream.

Chaos Construction 2001 - интервью с Maddy и Drv53b6 из Phantom Family.

Chaos Construction 2001 - интервью с Paracels и Sairoos из Placebo.

Chaos Construction 2001 - интервью с Pheel и EA из Antares.

Chaos Construction 2001 - продолжение эпического спора между мегакодерами Vivid и Sairoos.

Chaos Construction 2001 - подробный репортаж от CPU.

Раскрутка - Еще одна разрушенная мечта или описания "500 игр" - где правда, а где ложь.

Раскрутка - история создателей игры Star Glider 2 - Steven dunn/Software developement and design.

Раскрутка - Диззи в подземелье или Омлет опять не получился: новелла по игре Dizzy Unterground.

Раскрутка - описание игры "Talisman" - RPG с элементами аркады.

Железо - доработанная схема IDE-HDD адаптера.

Оттяг - чиста оттяг: детская самодельная газета "Птичке Кар-Кар".

Оттяг - intro: Не будем тянуть кота за яйца и начнем с прогона...

Оттяг - Army Suxx или Как закосить от армии, если ты полностью здоров.

Оттяг - глубины сумрачного мировосприятия Максима Магнетика...


Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Ferrum - Прeдлoгaю вaшeму внимaню "рaзмышлeния o рульнoм" тoвaрищa Nemo.
От редакции - вступительное слово от редакции, авторы журнала.
Застрял ? - Описание игры "Night Raider".
Вступление - содержание номера.
Обзор новинок - The Last Courier, Иван-дурак.

В этот день...   27 апреля