1 / 1 / 0
Регистрация: 02.04.2013
Сообщений: 40
|
||||||
1 | ||||||
Генератор нормально распределенной случайной величины в заданном диапазоне14.05.2013, 23:05. Показов 40139. Ответов 23
Метки нет (Все метки)
Здравствуйте, некоторое время назад я создавал тему с вопросом о том как сгенерировать случайные числа в диапазоне от Ν до M, Z число раз. Тогда мне посоветовали следующий код
Добавлено через 23 часа 55 минут Подскажите пожалуйста, срочно нужно.. совсем застопорился.
0
|
14.05.2013, 23:05 | |
Ответы с готовыми решениями:
23
Смоделировать алгоритм непрерывной случайной величины распределенной с плотностью Вероятность попадания нормально распределённой случайной величины Заданы математическое ожидание а и с.к.о. σ нормально распределенной случайной величины Х Вычислить вероятность попадания нормально распределённой случайной величины в интервал |
670 / 198 / 29
Регистрация: 10.05.2012
Сообщений: 595
|
||||||
15.05.2013, 15:11 | 2 | |||||
NikWhite,
NikWhite, ваще тут при больших значениях фигня будет Добавлено через 1 минуту NikWhite, если числа маленькие, то юзайте Добавлено через 41 секунду NikWhite, randMAX просто слишком маленький
0
|
3257 / 2059 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
|
|
15.05.2013, 15:18 | 3 |
NikWhite, для генерации нормально распределенных случайных величин используется преобразование Бокса-Мюллера. Гуглится легко, на все про все - три простенькие формулы.
1
|
127 / 131 / 11
Регистрация: 25.12.2011
Сообщений: 443
|
|
15.05.2013, 18:19 | 4 |
0
|
1 / 1 / 0
Регистрация: 02.04.2013
Сообщений: 40
|
|
15.05.2013, 19:47 [ТС] | 5 |
Имеется, промежуток, например от 200 до 300, в этом промежутке нужно сгенерировать нормально распределенную случайную величину.
0
|
127 / 131 / 11
Регистрация: 25.12.2011
Сообщений: 443
|
|
15.05.2013, 20:41 | 6 |
Почитайте про определение нормального распределения, там никаких промежутков нет, любое действительное значение может приниматься.
0
|
1 / 1 / 0
Регистрация: 02.04.2013
Сообщений: 40
|
||||||
15.05.2013, 23:41 [ТС] | 7 | |||||
Пробовал бокса-мюллера,но он жутко медленный (зависал даже на 10 значениях), совсем не подходит. решил использовать центральную предельную теорему
double NormalDistribution()
Добавлено через 13 минут Я могу генерировать случайною величину в заданном диапазоне, она получится равномерно распределенной на этом промежутке, а потом с помощью центральной предельной теоремы перейду к нормально распределенной. И еще Χ принадлежит [-∞;+∞], теоретически есть промежутки. Добавлено через 2 часа 30 минут Тут не нормально распределенная получается и мне нужно генерировать от 1000 значений.
0
|
1 / 1 / 0
Регистрация: 02.04.2013
Сообщений: 40
|
||||||
16.05.2013, 19:31 [ТС] | 9 | |||||
Ну код, наверное, так и выглядит
0
|
1 / 1 / 0
Регистрация: 02.04.2013
Сообщений: 40
|
|
16.05.2013, 22:49 [ТС] | 11 |
Дело то как раз и в промежутке, когда я генерирую равномерно распределенную случайную величину в промежутке от 200 и до 300, то все ок, но потом же эти значения используются в коде который я прислал, они складываются и в итоге распределение нормальное,а значения в этом промежутке не находятся (там получаются значения от 2х тысяч). Надо как то переписать код, чтобы значения были и нормально распределенные и находились в промежутке от 200 до 300.
0
|
1 / 1 / 0
Регистрация: 02.04.2013
Сообщений: 40
|
|
19.05.2013, 18:46 [ТС] | 13 |
Так не работает.Видимо не совсем поняли. Мне нужно сделать так чтобы нормально распределенная случайная величина находилась в промежутке от 200 до 300, но так сделать нельзя, поэто нужно нгенерировать равномерную от 200 до 300, перевести ее в нормальную, и сделать проекцию, как буд то, нормально распределенная находится от 200 и до 300.
0
|
1 / 1 / 0
Регистрация: 02.04.2013
Сообщений: 40
|
|
19.05.2013, 23:42 [ТС] | 15 |
250 получилась в результате (300+250)/2, а сигма -(300-200)/6 ? что за формула?что такое 6. Можете сказать в более общем виде, а то у меня границы любыми могут быть, не только 200 и 300.
0
|
1 / 1 / 0
Регистрация: 02.04.2013
Сообщений: 40
|
|
20.05.2013, 00:05 [ТС] | 17 |
Спасибо большое, а у вас есть ссылка на теорию, где расписано более подробно как все это работает.
0
|
Форумчанин
8216 / 5046 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
|
|
20.05.2013, 02:52 | 19 |
А если без извращений, то в бусте и С++11 есть удобные инструменты для генерации чисел в указанном диапазоне.
Распределение normal_distribution<double> name(нижняя граница, верхняя граница) совместно c Вихрем Мерсенна (mt19937) творят чудеса без всяких извратов
1
|
2 / 2 / 0
Регистрация: 11.11.2013
Сообщений: 4
|
|||||||||||||||||||||
11.11.2013, 09:40 | 20 | ||||||||||||||||||||
Не знаю снят ли до конца вопрос, но может кому пригодится. Так же прошу прощения за "много букв" но может кому будет интересно.
Тут нужно понимать что у нормального распределения есть такая характеристика как СКО(СреднеКвадратичное Отклонение) попробую объяснить на примере, что оно означает: Например у нас есть выборка из 1000 значений (нормально распределенная) и например СКО (или сигма) = 30 означает, что 67% всех значений меньше либо равны 30. Так же есть правило 2х сигм, говорящее о том что в диапазоне 2х сигм лежит 95% значений, и правило 3х сигм, говорящее о том, что 99,7% значений лежит в диапазоне 3х сигм. Теперь на нашем примере: 67% (СКО, сигма) значений лежат в диапазоне от [-30, 30] 95% (2 сигма) значений лежат в диапазоне от [-60, 60] (30*2 = 60) 99,7% (3 сигма) значений лежат в диапазоне от [-90, 90] (30*3 = 90) Теперь вернемся к твоей задаче, тебе нужны числа от M до N, не очень удачное обозначение, т.к. М обычно обозначается математическое ожидание(среднее значение), поэтому перефомулируем, так: нужны числа в диапазоне от N1 до N2, получаем: M (мат. ожидание) = (N2+N1) / 2 (это просто среднее значение, от которого может колебатся ошибка) 3 сигма = M-N1, т.е. M-N1 это максимальное значение которое может принимать ошибка, и говоря о 3 сигма, мы говорим, что мы хотим такую выборку, 99,7% которой не больше M-N1 соответственно СКО (сигма) = 3 сигма / 3 = (M-N1)/3 это то значение с которым ты должен использовать генератор нормальных чисел, чтобы генерируемые значения не выходили из твоего диапазона. Далее сам генератор:
Результат работы генератора: Генерировалось 10.000.000 значений с СКО = 0.3, потом вычислялась статистика полученной выборки, результат: 67% = 0.299913049 | 95% = 0.600402057 | 99.7% = 0.900952756 67% = 0.300060332 | 95% = 0.600611031 | 99.7% = 0.901350796 67% = 0.299943686 | 95% = 0.600414336 | 99.7% = 0.900437713 67% = 0.300084651 | 95% = 0.60008353 | 99.7% = 0.901191831 67% = 0.299931049 | 95% = 0.599887371 | 99.7% = 0.90083015 67% = 0.299906909 | 95% = 0.600438833 | 99.7% = 0.901222467 67% = 0.300041765 | 95% = 0.600383639 | 99.7% = 0.900027037 67% = 0.300010741 | 95% = 0.60065949 | 99.7% = 0.900523663 67% = 0.299839497 | 95% = 0.600499749 | 99.7% = 0.900946617 67% = 0.300182939 | 95% = 0.600420237 | 99.7% = 0.901810706 Среднее СКО = 0.299977 Ошибка генератора 0.0077% ничтожно малое значение. Ну и пример использования: Например, функция для решения твоей задачи будет иметь следующий вид (сохраняя твои обозначения):
Добавлено через 1 час 26 минут Не дают чето свое же сообщение поправить, сейчас ещё по эмпирировал Лучше использовать числа 25 и 1.99661, т.е. функция примит вид:
67% = 0.300074607 | 95% = 0.600425005 | 99.7% = 0.899374366 67% = 0.299821496 | 95% = 0.600100815 | 99.7% = 0.898648262 67% = 0.300249696 | 95% = 0.600120068 | 99.7% = 0.898583174 67% = 0.299997002 | 95% = 0.600055397 | 99.7% = 0.898914099 67% = 0.300120205 | 95% = 0.600100577 | 99.7% = 0.900645971 67% = 0.299815416 | 95% = 0.599782825 | 99.7% = 0.900483012 67% = 0.299841166 | 95% = 0.600009799 | 99.7% = 0.898874998 67% = 0.300061643 | 95% = 0.599899948 | 99.7% = 0.899212003 67% = 0.300081104 | 95% = 0.600217521 | 99.7% = 0.900146246 67% = 0.300067931 | 95% = 0.600314617 | 99.7% = 0.899646521 среднее ско: 0.300013
2
|
11.11.2013, 09:40 | |
11.11.2013, 09:40 | |
Помогаю со студенческими работами здесь
20
Какой вид имеет функция плотности нормально распределённой случайной величины Х, если ее математическое ожидание M(X) = Найти дисперсию нормально распределенной величины Математическое ожидание симметрично распределенной случайной величины Распределение синуса равномерно распределенной случайной величины Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи | |||||
Как работать с ветками (branch) в Git
InfoMaster 17.01.2025
Система контроля версий Git произвела революцию в процессе разработки программного обеспечения, предоставив разработчикам мощный инструмент для управления изменениями в коде. Одной из наиболее важных. . .
|
Как откатить последние коммиты в Git
InfoMaster 17.01.2025
Система контроля версий Git стала неотъемлемой частью современной разработки программного обеспечения, предоставляя разработчикам мощные инструменты для управления изменениями в коде. Одним из. . .
|
Что такое boilerplate и scaffold, чем они отличаются
InfoMaster 17.01.2025
В современном мире разработки программного обеспечения эффективность и скорость создания качественного кода играют crucial роль в успехе проектов. Разработчики постоянно ищут способы оптимизировать. . .
|
Чем отличаются ссылки и указатели в С++
InfoMaster 17.01.2025
В современном программировании на C++ эффективная работа с памятью является ключевым аспектом разработки качественного программного обеспечения. Указатели и ссылки представляют собой два. . .
|
В чем разница между PUT и POST
InfoMaster 17.01.2025
В современной веб-разработке правильное использование HTTP-методов играет ключевую роль в создании надежных и эффективных API-интерфейсов. Протокол HTTP прошел долгий путь развития с момента своего. . .
|
DTO, POCO и Value Object: что это такое, когда и как использовать
InfoMaster 17.01.2025
Введение в паттерны передачи данных
В современной разработке программного обеспечения эффективное управление данными и их передача между различными слоями приложения являются ключевыми аспектами. . .
|
Что такое pull request в Git
InfoMaster 17.01.2025
В современной разработке программного обеспечения pull request в Git представляет собой ключевой механизм для эффективного взаимодействия между разработчиками при работе над общим кодом проекта. По. . .
|
Как вернуться к предыдущему коммиту в Git
InfoMaster 17.01.2025
Система контроля версий Git представляет собой мощный инструмент для управления изменениями в программном коде, который позволяет разработчикам эффективно отслеживать и контролировать историю. . .
|
Что такое паттерны программирования и проектирования
InfoMaster 17.01.2025
Роль паттернов в современной разработке программного обеспечения
В современном мире разработки программного обеспечения паттерны проектирования стали неотъемлемой частью профессионального подхода. . .
|
Как добавить конструктор Яндекс Карт на сайт
InfoMaster 17.01.2025
Введение в API Яндекс Карт
В современной веб-разработке интеграция картографических сервисов стала неотъемлемой частью многих проектов. API Яндекс Карт представляет собой мощный инструмент для. . .
|
Что такое javascript:void(0) и зачем это нужно
InfoMaster 17.01.2025
Когда вы сталкиваетесь с веб-разработкой, особенно с использованием JavaScript, одной из директив, которая часто встречается, является javascript:void(0). Это выражение вызывает интерес из-за своей. . .
|
Что такое оркестрация и хореография микросервисов
InfoMaster 17.01.2025
Введение в оркестрацию и хореографию микросервисов
В современном мире разработки программного обеспечения микросервисная архитектура стала ключевым подходом к созданию масштабируемых и гибких. . .
|