Популярные услуги

Главная » Лекции » Математика » Методы моделирования » Алгоритмический способ

Алгоритмический способ

2021-03-09СтудИзба

Алгоритмический способ.

Способ основан на формировании случайных чисел с помощью специальных алгоритмов.

Преимущества и недостатки типов генерации случайных чисел.

Маша ела кашу.

Способ

Достоинства

Недостатки

Аппаратный

  1. Запас чисел неограничен
  2. Расходуется мало операций
  3. Не занимается место в оперативной памяти.
  1. Требуется периодическая проверка на случайность
  2. Нельзя воспроизводить последовательности
  3. Используются специальные устройства. Надо стабилизировать

Табличный

  1. Требуется однократная проверка
  2. Можно воспроизводить последовательности
  1. Запас чисел ограничен
  2. Занимает место в оперативной памяти и требуется время на обращение к памяти

Рекомендуемые материалы

Алгоритмический

  1. Однократная проверка
  2. Можно многократно воспроизводить последовательности чисел
  3. Относительно малое место в оперативной памяти
  4. Не используются внешние устройства
  1. Запас чисел последовательности ограничен её периодом
  2. Требуются затраты машинного времени

Лабораторная работа №2.

Сравнить эти два способа. Причем сравниваем их по критерию случайности. Т.е. придумать свой критерий случайности (можно конечно и в книжке посмотреть, но лучше самому)..

количественная оценка..

К пятнице:

1. Алгоритм Марселя Зейнмана (?). (целочисленная арифметика) (3-я группа)

2. Функция, увеличивающая период последовательности стандартного генератора rand.

3. Способ Ленмара (?)

В настоящем времени с помощью рекуррентных математических уравнений реализовано несколько алгоритмов генерирования псевдослучайных чисел. Псевдослучайными эти числа называются потому, что фактически они, даже пройдя все статистические испытания на случайность и равномерность распределения, остаются полностью детерминированными. Т.е. если каждый цикл работы генератора начинается с одними и теми же с исходными данными (константами и начальными условиями и значениями), то на выходе мы получаем одни и те же последовательности.

Сферы применения.

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

Простейшие алгоритмы генерации последовательности псевдослучайных чисел

Одним из первых способов получения последовательности псевдослучайных чисел было выделение дробной части многочлена первой степени:

Если n пробегает значения натурального ряда чисел, то поведение yn выглядит весьма хаотично. Физик Якобит доказал, что при рациональном коэффициенте a множество y конечно, а при иррациональном – бесконечно и всюду плотно в интервале [0, 1]. Для многочленов больших степеней такую задачу решил Герман Вей, т.е. он предложил критерий равномерности распределения любой функции от натурального ряда чисел. Называется это эргодичностью и заключается в том, что среднее по реализациям псевдослучайных чисел равно среднему по всему их множеству с вероятностью 1. Эти результаты далеки от практики, поэтому она используется только для действительных чисел, что затрудняет практическую её реализацию. Попытки замены настоящего иррационального числа его приближением на компьютере привели к тому, что полученные последовательности оканчиваются циклом с коротким периодом.

  1. 1946 год, Фон Нейман.

Каждое последующее число образуется возведением предыдущего в квадрат и отбрасыванием цифр. Способ с точки зрения случайности оказался нестабильным.

  1. Лимер

    Для подбора коэффициентов k, c, m потрачены десятки лет. Подбор почти иррациональных k ничего не дает. Установили, что при c = 0 и  наибольший период достигается при нечетном начальном числе и при k = 3 + 8i, k = 5 + 8i.
  2. Форсайд

В 1977 году показал, что тройки последовательности чисел лежат на 15 параллельных плоскостях.

От отчаяния используют 2 и даже 3 разных генератора, смешивая их значения. Если бы разные генераторы были независимыми, то сумма их последовательностей обладала дисперсией, равной сумме дисперсией. Иначе случайность рядов возрастет при суммировании. Сейчас в системах программирования обычно используют конгруэнтные генераторы по алгоритму, предложенному национальным бюро стандартов США, который имеет длину .

Генерация случайных чисел по алгоритму Зеймана.

{1, 1, 2, 3, 5, 8, 13, 21, …}

mod 10

{1, 1, 2, 3, 5, 8, 3, 1, …}

Переименовываем с помощью какого-либо ГСЧ; пусть всё так и осталось:

{1, 1, 2, 3, 5, 8, 3, 1, …}

С начала CF = 1.

Пример:

randomize(231)

x = rnd();

randomize(231)

y = rnd();

// x  != y

x = rnd(-231)

y = rnd(-231)

// x = y

(Серега рассказывает про то, как можно пытаться смешивать генерацию случайных чисел)

Лабораторная работа №3.

Суть: изучить 2 стандартных распределения по всем свойствам распределения

Ф-ция распределения, плотность распределения, мат. ожидание, дисперсия, …

Равномерное распределение изучают все.

По списку с периодом 4 изучают

1.

2. экспоненциальное

3. нормальное распределение (Гауссовское)

4. k – распределение Эрланга

Построить графики:

  1. Теоретического распределения (функция и плотность распределения)
  2. Экспериментального по «своему» закону распределения (ф-ция и плотность)

Программа генерации случайных чисел на Фортране для машин EС (~IBM 360)

SUBROUTINE RANDUM( IX, IY, RN)     // была придумана для 32 разрядной машины

    IY = IX * 1220703125

    IF (IY) 3,4,4       // if (IY < 0) then

3   IY = IY + 2147483647 + 1

4   RN = IY

    RN = RN * 0.4656613E-9

    IX = IY

    RETURN

END

// обращение к данной процедуре

CALL RANDUM(IX, IY, YFL)

IX – число, которое при первом обращении должно содержать нечетное целое число, состоящее менее чем из 9 цифр

IY - полученное случайное число, используемое при последующих обращениях к программе

YFL - полученное равномерно распределенное в интервале [0, 1] случайное число

Для имитации равномерного распределения в интервале от [a, b] используется обратное преобразование функции плотности вероятности:

где R – равномерно распределенное псевдослучайное число на [0, 1].

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

     (1)

Метод основан на утверждении, что случайная величина x, принимающая значения, равные корню уравнения (1) имеет плотность распределения f(x). R - равномерная случайная величина от 0 до 1.

Значение случайной величины распределенной по показательному закону исходя из (1) может быть вычислено следующим образом:

Распределение Пуассона.

Распределение Пуассона относится к числу дискретных, т.е. таких при которых переменная может принимать лишь целочисленные значения, включая норму с мат. ожиданием и дисперсией равной l > 0.

Для генерации Пуассоновских переменных можно использовать метод точек, в основе которого лежит генерируемое случайное значение Ri , равномерно распределенное на [0, 1], до тех пор, пока не станет справедливым

При получении случайной величины, функция распределения которой не позволяет найти решение уравнения (1) в явной форме можно произвести кусочно-линейную аппроксимацию, а затем вычислять приближенное значение корня. Кроме того, при получении случайных величин часто используют те или иные свойства распределения.

Распределение Эрланга.

Распределение Эрланга характеризуется двумя параметрами: l и k. Поэтому при вычислении случайной величины в соответствии с данным законом воспользуемся тем, что поток Эрланга может быть получен прореживанием потока Пуассона k раз. Поэтому достаточно получить k значений случайной величины распределенной по показательному закону и усреднить их.

Нормальное (Гауссово) распределение.

Нормально распределенная случайная величина может быть получена как сумма большого числа случайных величин распределенных по одному и тому же закону и с одними и теми же параметрами.

Случайная величина X имеющая нормальное распределение с математическим ожиданием MX и среднеквадратичным отклонением sX может быть получена по следующей формуле:

Для сокращения вычислений по нормальному закону распределения на практике часто принимают N = 12. Что в дает довольно точные результаты.

Процедура генерирования псевдослучайных чисел (равномерный и нормальный законы распределения):

var n, i:integer;

    x,R:double;

     Const m34: double = 28395423107.0;

         m35: double = 34359738368.0;

         m36: double = 68719476736.0;

         m37: double = 137438953472.0;

function Rand(n:integer):double;

var S, W: double;

    i: integer;

begin

    if n = 0 then

    begin

      x := m34; Rand := 0; exit;

    end;

    S := -2.5;

    for i := 1 to 5 do

    begin

      x := 5.0 * x;

      if x > m37 then x := x - m37;

      if x > m36 then x := x - m36;

      if x > m35 then x := x - m35;

      w := x / m35;

      if n = 1 then

      begin

            Rand := W; exit

      end;

      S := S + W;

    end;

    S := S * 1.54919;

    Rand := ( sqr(S) - 3.0 ) * S * 0.01 + S;

end;

begin

    R := Rand(0);

    for i := 1 to 200 do

      writeln( Rand(2):18:10)

end.

При n = 0 происходит параметрическая настройка или т.н. «установка».

При n = 1 будем получать равномерно распределенную случайную величину.

При n = 2 будет гауссово (нормальное) распределение.

["всем, пожалуйста, поиграться с этим алгоритмом и построить график" (с) by Рудаков]

Методика построения программной модели ВС.

Для разработки программной модели исходная система должна быть представлена как стохастическая система массового обслуживания. Это можно объяснить следующим: информация от внешней среды поступает в случайные моменты времени, длительность обработки различных типов информации может быть в общем случае различна. Т.о. внешняя среда является генератором сообщений. А комплекс вычислительных устройств (ВС) – обслуживающими устройствами.

Обобщенная структурная схема ВС.

ИИ – источники информации – выдают на вход буферной памяти (БП) независимые друг от друга сообщения. Закон появления сообщений – произвольный, но задан на перед.

В БП (буферной памяти) сообщения записываются «в навал» и выбираются по одному в обслуживающий аппарат (ОА) по принципу FIFO/LIFO. Длительность обработки одного сообщения в ОА в общем случае так же может быть случайной, но закон обработки сообщений должен быть задан. Т.к. быстродействие ОА ограничено то на входе системы в БП возможно сложение данных ожидающих обработки.

А – абоненты.

Программная модель из этой системы создается следующим образом:

Должна быть обязательно программа сбора статистики (ПБССт – программный блок сбора статистики). Причем статистику программа должна собирать по каждому из объектов модели. Так же должна быть программа, которая позволит "оживить" систему – это программа синхронизации (блок синхронизации), которая покажет когда и в какое время будут активизированы те или иные фрагменты модели.

Моделирование работы источника информации (ИИ).

Поток сообщений обычно имитируется моментами времени, отображающими появление очередного сообщения в потоке.

где Ti – интервал времени между появлением i-го и (i-1)-го сообщения.

Программа – имитатор выработки таких интервалов:

1) Обратиться к генератору равномерно распределенных случайных величин на [a,b]

2) Ti – по заданному закону

3) К текущему времени + Ti

// процедурка равномерного распределения псевдослучайных чисел на итервале [a,b]

// U - равном. распр. на [0, 1]

// x = a + (b - a)U

double get_time (int i)

{

    double S = 0;

    srand(seek);

    if ( i > 1 ) S += get_time(i - 1);

    S += a + (b - a)get_u();

    return S;

}

или

double get_time (int i)

{

    double S = 0;

    srand(seek);

    for (int i = 0; i < .. ; i++)

      S += a + (b - a)rand();

    return S;

}

Выражения для вычисления времени с разлчным распределением:

Вид распределения

Выражение

равномерное на [a,b]

В лекции "Этапы проектирования баз данных" также много полезной информации.

нормальное

, n ~= 12

экспоненциальное

Эрланга

Свежие статьи
Популярно сейчас
Почему делать на заказ в разы дороже, чем купить готовую учебную работу на СтудИзбе? Наши учебные работы продаются каждый год, тогда как большинство заказов выполняются с нуля. Найдите подходящий учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Нашёл ошибку?
Или хочешь предложить что-то улучшить на этой странице? Напиши об этом и получи бонус!
Бонус рассчитывается индивидуально в каждом случае и может быть в виде баллов или бесплатной услуги от студизбы.
Предложить исправление
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5138
Авторов
на СтудИзбе
442
Средний доход
с одного платного файла
Обучение Подробнее