4226 / 1795 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
||||||
1 | ||||||
Случайные числа с заданным распределением31.07.2015, 06:19. Показов 17828. Ответов 21
Метки нет (Все метки)
Что то не соображу, как сделать генератор случайных чисел с плавающей запятой, имеющий заданное, например нормальное распределение. Синтаксис
0
|
31.07.2015, 06:19 | |
Ответы с готовыми решениями:
21
генерация случайных чисел с заданным распределением вероятности Нужно чтобы случайные числа вставали в конец массива,а не удаляли числа Случайные числа Случайные числа в C++ |
Модератор
13507 / 10757 / 6412
Регистрация: 18.12.2011
Сообщений: 28,714
|
||||||
31.07.2015, 06:29 | 2 | |||||
0
|
Неэпический
|
|
31.07.2015, 06:31 | 3 |
taras atavin, std::normal_distribution из c++11
0
|
4226 / 1795 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|
31.07.2015, 06:42 [ТС] | 4 |
Что это:
Добавлено через 2 минуты Что такое Sigma и как она связана с дисперсией? Добавлено через 40 секунд Что это: ?
0
|
2782 / 1935 / 570
Регистрация: 05.06.2014
Сообщений: 5,600
|
|
31.07.2015, 06:45 | 5 |
Шаблонная магия создающая генератор случайных чисел.
Строчкой выше, в конструкторе генератора созданного шаблонной магией. Очевидно, корень квадратный из дисперсии. "Правило трех сигм" ничего не говорит?
0
|
4226 / 1795 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|
31.07.2015, 07:04 [ТС] | 6 |
Что это шаблон я и сам вижу. Какая величина здесь декларирована?
Добавлено через 1 минуту А если я не хочу для каждого распределения заводить отдельную декларацию? А если параметры распределения вводятся с клавиатуры пользователем? Добавлено через 21 секунду Нет конечно.
0
|
2782 / 1935 / 570
Регистрация: 05.06.2014
Сообщений: 5,600
|
|
31.07.2015, 07:08 | 7 |
А в документацию посмотреть? Первый аргумент - мат-ожидание, второй - сигма.
И кто вам мешает передать введенные параметры в конструктор? Значит, учить матчасть.
0
|
4226 / 1795 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
||||||
31.07.2015, 07:28 [ТС] | 8 | |||||
А зачем мне на каждое распределение конструировать отдельную переменную?
Добавлено через 5 минут Кроме того,
0
|
2782 / 1935 / 570
Регистрация: 05.06.2014
Сообщений: 5,600
|
|
31.07.2015, 07:31 | 9 |
Чтобы хранить в ней два параметра распределения. Хранить их отдельно от генератора не по ООП-феншую.
Вам религия запрещает поставить std::normal_distribution<double> distribution(5.0,2.0); после cin?
0
|
4226 / 1795 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|
31.07.2015, 07:34 [ТС] | 10 |
Зачем? Для этого уже есть две величины.
Вот только здесь то он каким боком? Зато необходима процедурная парадигма.
Добавлено через 1 минуту После чего его ещё поставить? После ссылки? Или после закрывающей фигурной скобки всей функции? Я раз двести в одной функции буду вводить параметры разнообразных нормальных распределений, для каждой комбинации гонять цикл на миллионы шагов и получать значения одной и той же величины x, каждый раз разные. Нафига мне двести отдельных деклараций задающих распределение величин?
0
|
2782 / 1935 / 570
Регистрация: 05.06.2014
Сообщений: 5,600
|
||||||
31.07.2015, 07:36 | 11 | |||||
Затем, что эти две величины сдохнут после ближайшего return, а генератор создается на века. Хотя, конечно, ситуации бывают разные.
Не тупите.
0
|
4226 / 1795 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|
31.07.2015, 07:40 [ТС] | 12 |
Так я и не умею.
Добавлено через 1 минуту Что за бред? Эти две величины отлично могут быть статик, а то и глобальными, а генератор нужен только в части одной функции и до ретона доживать не обязан.
0
|
2782 / 1935 / 570
Регистрация: 05.06.2014
Сообщений: 5,600
|
||||||
31.07.2015, 07:46 | 13 | |||||
И будет у вас три десятка "rand(M,D,generator)" вместо трех десятков "rand(generator)". Оно вам надо? Длиннее же выходит.
0
|
4226 / 1795 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|
31.07.2015, 08:03 [ТС] | 14 |
0
|
2782 / 1935 / 570
Регистрация: 05.06.2014
Сообщений: 5,600
|
|
31.07.2015, 08:04 | 15 |
0
|
4226 / 1795 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|
31.07.2015, 08:31 [ТС] | 16 |
Вижу, что одна. Но это же не бейсик, где можно один и тот же массив декларировать двести раз одной и той же строчкой по разу на каждом шагу цикла и он будет динамически менять свою размерность. Сколько здесь величин?
0
|
2782 / 1935 / 570
Регистрация: 05.06.2014
Сообщений: 5,600
|
|
31.07.2015, 08:47 | 17 |
Величина в смысле "объект в памяти" одна. На пальцах:
1) В начале итерации в стеке выделяется память под normal_distribution. 2) Вызывается функция "конструктор", которой передается указатель на память normal_distribution. 3) В конце итерации вызывается функция "деструктор", которой передается указатель на память normal_distribution. 4) Выделенная под normal_distribution память освобождается. 5) goto 1. Потом приходит оптимизатор и путем особой оптимизирующей магии выкидывает пункты 1, 3 и 4 нафиг. А пункт 2 инлайнит, заменяя вызов конструктора прямой подстановкой его кода. Результат как если бы вы объявили переменную вне цикла.
0
|
4226 / 1795 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|
31.07.2015, 09:15 [ТС] | 18 |
Ну просто отлично. На каждом шагу цикла дёргать выделение/освобождение памяти. Причём, помимо роста/сокращения стека при вызовах функций, которые ни куда не деваются. Не смешно.
0
|
2782 / 1935 / 570
Регистрация: 05.06.2014
Сообщений: 5,600
|
|
31.07.2015, 09:19 | 19 |
1) Это "выделение-освобождение" - одна операция вычитания/сложения. Колоссальные расходы времени, ага.
2) Еще раз, оптимизатор ее выкинет.
0
|
4226 / 1795 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|
31.07.2015, 10:53 [ТС] | 20 |
Что это:
?
Добавлено через 36 секунд Без которых можно обойтись. + сама работа конструктора и деструктора. Добавлено через 18 минут
0
|
31.07.2015, 10:53 | |
31.07.2015, 10:53 | |
Помогаю со студенческими работами здесь
20
случайные числа в с++ Случайные числа Случайные числа Случайные числа Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |