Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.03.2012, 23:31   #1
Petruha-nsk
Пользователь
 
Аватар для Petruha-nsk
 
Регистрация: 10.04.2009
Сообщений: 69
По умолчанию проблема с библиотекой Boost при генерации чисел по закону Бетта-распределения

Здравствуйте!

Я занимаюсь научной деятельностью,а конкретно моделированием стахостических процессов и проверкой статистических гипотез. Недавно столкнулся с библиотекой Boost, поэтому еще не совсем понимаю концепцию ее, хотя не скрываю,что не совсем понимаю открытые исходные файлы библиотеки. Проблема заключается в следующем: генератор случайных числе для Бета-распределения выдает ошибку на следующий код:

Код:
#include<string.h>
#include<stdio.h>
#include<conio.h>
#include<math.h>

#include<stdlib.h>
#include<time.h>
#include<limits.h>
#include<boost/random.hpp>

#include<boost/random/mersenne_twister.hpp>
#include<boost/random/chi_squared_distribution.hpp>
#include<boost/random/fisher_f_distribution.hpp>
#include <boost/math/distributions/normal.hpp>

#include <boost/math/distributions/weibull.hpp>
#include <boost/math/distributions/beta.hpp>
#include <boost/math/policies/policy.hpp>
#include <boost/random/variate_generator.hpp>

#include <boost/random/mersenne_twister.hpp>

#include<ctime>
#include<algorithm>
#include<locale.h>
#include<vector>

using boost::math::beta_distribution;
beta_distribution<> beta_dist(param[0], param[1]);
variate_generator<mt19937&, beta_distribution<>>  beta_sampler(rng, beta_dist);
return beta_sampler();
следующие ошибки:

1> f:\nstu_university_labwork\8 semester\выпускная квалификационная бакалаврская работа\филоненко\criterionofhomogen eity\criterionofhomogeneity\sample. cpp(120): см. ссылку на создание экземпляров класса шаблон при компиляции "boost::random::variate_generator<E ngine,Distribution>"
1> with
1> [
1> Engine=boost::random::mt19937 &,
1> Distribution=boost::math::beta_dist ribution<>
1> ]
1>d:\program files (x86)\microsoft visual studio 10.0\vc\include\boost\random\variat e_generator.hpp(59): error C2146: синтаксическая ошибка: отсутствие ";" перед идентификатором "result_type"
1>d:\program files (x86)\microsoft visual studio 10.0\vc\include\boost\random\variat e_generator.hpp(59): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>d:\program files (x86)\microsoft visual studio 10.0\vc\include\boost\random\variat e_generator.hpp(59): error C2602: boost::random::variate_generator<En gine,Distribution>::result_type не является членом базового класса "boost::random::variate_generator<E ngine,Distribution>"
1> with
1> [
1> Engine=boost::random::mt19937 &,
1> Distribution=boost::math::beta_dist ribution<>
1> ]
1> d:\program files (x86)\microsoft visual studio 10.0\vc\include\boost\random\variat e_generator.hpp(59): см. объявление "boost::random::variate_generator<E ngine,Distribution>::result_type"
1> with
1> [
1> Engine=boost::random::mt19937 &,
1> Distribution=boost::math::beta_dist ribution<>
1> ]
1>d:\program files (x86)\microsoft visual studio 10.0\vc\include\boost\random\variat e_generator.hpp(59): error C2868: boost::random::variate_generator<En gine,Distribution>::result_type: недопустимый синтаксис для "using"-объявления; требуется полное имя
1> with
1> [
1> Engine=boost::random::mt19937 &,
1> Distribution=boost::math::beta_dist ribution<>
1> ]


Помогите пожалуйста. К сожалению,весь код выложить не могу,потому находится в разных файлах (в .h и .cpp файлах,связанных вместе).
Заранее спасибо!
Petruha-nsk вне форума Ответить с цитированием
Старый 08.03.2012, 10:11   #2
EUGY
Форумчанин
 
Аватар для EUGY
 
Регистрация: 11.07.2010
Сообщений: 914
По умолчанию

Код:
variate_generator<mt19937&, beta_distribution<>>  beta_sampler(rng, beta_dist);
Вижу пропущеный пробел, мой компиль такое бы не схавал.

Код:
variate_generator<mt19937&, beta_distribution<>    >  beta_sampler(rng, beta_dist);
EUGY вне форума Ответить с цитированием
Старый 08.03.2012, 10:16   #3
Petruha-nsk
Пользователь
 
Аватар для Petruha-nsk
 
Регистрация: 10.04.2009
Сообщений: 69
По умолчанию

VS2010 спокойно реагирует на пробел. Но вопрос уже разрешился, Boost не поддерживает псевдогенерацию чисел по этому закону, нашел аппроксимацию через равномерное распределение. Спасибо!
Petruha-nsk вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Заполнить boost::bimap используя boost::assign Diego__ Общие вопросы C/C++ 2 18.02.2012 16:48
функция генерации случайных чисел rand() в main pufystyj Общие вопросы C/C++ 4 08.02.2011 21:09
Пара вопросов по генерации чисел gamer123 Общие вопросы Delphi 5 26.07.2010 17:02
Проблема с библиотекой igroman PHP 2 11.01.2009 11:07