Нормальный закон распределения случайных чисел
Задался таким, собственно, вопросом
Кто-нибудь уже реализовывал/сталкивался с нормальным распределением случайных чисел в AS3? Погуглив, нашел только очень приближенные реализации или же ссылки на теоремы (мол, разбирайтесь и реализуйте сами). Может кто-то знаком с легковесными библиотеками, или делал что-то сам? =============== Пока наиболее оправданным найденным решением оказалсь реализация "Центральной предельной теоремы".Но там не понятно как задавать дисперсию |
Википедия подсказывает о преобразовании Бокса-Мюллера. Ну а гугол по предыдущей фразе и добавлением магических "as3" дал ссылку: http://blog.controul.com/2009/04/sta...bution-in-as3/
|
Ух, отличная статейка! Там еще и равномерное распределение есть!
Сам автор пишет что самым простым и недорогим способом реализации будут таблицы со значениями.. Однако реализация интересная) Интересно сравнить с реализацией той центральной предельной теоремы) Отпишусь как сделаю Спасибо за ответ! |
Вложений: 1
Равномерное распределение получается простым рандомом
Нормальное распределение получается с помощью среднего значения от обычного рандома и энтропийного Что то такого рода Код AS3:
|
Ну вот ранд3 это и есть реализация Центральной Предельной Теоремы, только я использовал 4 рандомных числа, а не 2
|
Вложений: 2
Оно уже и при 3-х неэнтропийных похоже получается (и симметричнее выглядит):
Вложение 29625 Код AS3:
Вложение 29626 |
Вложений: 3
Чем больше переменных тем ближе к нормальному распределению)
В самой теореме вообще говорится о бесконечном ряде несвязанных значений Способ товарища Парка Миллера не впечатлил, там выдаются рандомные значения с математическим ожиданием равным 0 и непонятной дисперсией. То есть выдает случайные числа от минус пяти-шести до пяти-шести с плюсом Учитывая это, числа еще придется приводить к диапазону (0, 1), с мат. ожиданием 0.5, а это дополнительные вычисления Со всем вышесказанным получаем такую картину: Сравнение реализации Парка Миллера с реализацией expl (Синим - Парк Миллер) Вложение 29627 Код AS3:
в функции генерации мат ожидание равно 400, стандартная дисперсия умножена на 100 С учетом всех преобразований и условностей (проверка на выход за границы массива) получаем следующее время выполнения: способ Парка Миллера - 111 мс Способ, реализованный товарищем expl (с тремя значениями) - 173 мс Первый способ, которым я воспользовался (4 переменные) - 98 мс Сравнение моей реализации с Парком Миллером (синим - Парк Миллер): Вложение 29628 Код функции: Код AS3:
Вложение 29629 В общем, сдается мне, надо смотреть в сторону Алгоритма Зиггурата, про который написано в конце статьи) |
Простите, а какая задача решалась?
|
Мне надо было рандомно расположить цветочки, но таким образом, чтобы к центру экрана их плотность была бы больше, чем к краям)
В итоге от реализации с нормальным распределением (и от размещения в центре) отказался, сделал совсем по-другому (расположил цветочки по трем направляющим с равномерным разбросом). Но вопрос оказался интересным |
Часовой пояс GMT +4, время: 01:26. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.