2013-11-16 2 views
2

Я использую случайную библиотеку C++ 11 для генерации случайных чисел. Теперь я хочу создать смесь из трех нормальных распределений со средними 50 100 и 150 и std dev 10. Как я могу это сделать? Спасибо. GLКак создать тримодальное распределение (смесь) в C++ со случайной библиотекой?

+0

Tha t - интересная проблема. Вы просите общий алгоритм? Или вы запрашиваете правильный синтаксис для реализации известного алгоритма. Это домашняя проблема? –

ответ

1

В интерфейсе std :: lib нет API, который напрямую поддерживает мультимодальные дистрибутивы. Вы должны построить дистрибутив тримодального из унимодального нормального распределения, которое является поставляется по стандарту:

template <class RealType = double> 
class normal_distribution; 
0

Я сделал это случайно выбирая между 3 нормальными распределениями,

как:

a=rand(1,3) 
switch(a) 
case 1: 
    res=rand_from_first_normal_distribution(); 
case 2: 
    res=rand_from_second_normal_distribution(); 
case 3: 
    res=rand_from_third_normal_distribution(); 

Во всяком случае, крайний срок для этого курса был продлен до 16 февраля, так что не волнуйтесь :)

+0

Это работало для меня при создании случайных выборок из распределения смеси. Это не сработает при оценке фактических функций распределения смеси. Однако у него было головокружение - добавьте комментарий, если вы голосуете, чтобы все знали, почему вы считаете, что ответ плох. – masad

Смежные вопросы