crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> не генерирует Бета-распределение, ошибка в variate_generator
pe1e
  опции профиля:
сообщение 7.3.2012, 21:46
Сообщение #1


Новичок


Группа: Новичок
Сообщений: 2
Регистрация: 7.3.2012
Пользователь №: 3251

Спасибо сказали: 0 раз(а)




Репутация:   0  


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

Я занимаюсь научной деятельностью,а конкретно моделированием стахостических процессов и проверкой статистических гипотез. Недавно столкнулся с библиотекой 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\выпускная квалификационная бакалаврская работа\филоненко\criterionofhomogeneity\criterionofhomogeneity\sample.cpp(120): см. ссылку на создание экземпляров класса шаблон при компиляции "boost::random::variate_generator<Engine,Distribution>"
1> with
1> [
1> Engine=boost::random::mt19937 &,
1> Distribution=boost::math::beta_distribution<>
1> ]
1>d:\program files (x86)\microsoft visual studio 10.0\vc\include\boost\random\variate_generator.hpp(59): error C2146: синтаксическая ошибка: отсутствие ";" перед идентификатором "result_type"
1>d:\program files (x86)\microsoft visual studio 10.0\vc\include\boost\random\variate_generator.hpp(59): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>d:\program files (x86)\microsoft visual studio 10.0\vc\include\boost\random\variate_generator.hpp(59): error C2602: boost::random::variate_generator<Engine,Distribution>::result_type не является членом базового класса "boost::random::variate_generator<Engine,Distribution>"
1> with
1> [
1> Engine=boost::random::mt19937 &,
1> Distribution=boost::math::beta_distribution<>
1> ]
1> d:\program files (x86)\microsoft visual studio 10.0\vc\include\boost\random\variate_generator.hpp(59): см. объявление "boost::random::variate_generator<Engine,Distribution>::result_type"
1> with
1> [
1> Engine=boost::random::mt19937 &,
1> Distribution=boost::math::beta_distribution<>
1> ]
1>d:\program files (x86)\microsoft visual studio 10.0\vc\include\boost\random\variate_generator.hpp(59): error C2868: boost::random::variate_generator<Engine,Distribution>::result_type: недопустимый синтаксис для "using"-объявления; требуется полное имя
1> with
1> [
1> Engine=boost::random::mt19937 &,
1> Distribution=boost::math::beta_distribution<>
1> ]


Помогите пожалуйста. К сожалению,весь код выложить не могу,потому находится в разных файлах (в .h и .cpp файлах,связанных вместе).
Заранее спасибо!
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Iron Bug
  опции профиля:
сообщение 8.3.2012, 13:08
Сообщение #2


Профессионал
*****

Группа: Модератор
Сообщений: 1611
Регистрация: 6.2.2009
Из: Yekaterinburg
Пользователь №: 533

Спасибо сказали: 219 раз(а)




Репутация:   12  


скорее всего, тут общесишная опечатка:
в конструкциях типа template1_name<template2_name<> > важно соблюдать пробел между последними закрывающими угловыми скобками "> >" иначе компилятор рассматривает эту конструкцию, как оператор сдвига >>.
попробуй поставить пробелы в таких конструкциях (beta_distribution<>>) и посмотреть на результат.

P.S. и ещё: процессы стОхАстические, а не стахостические :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
BRE
  опции профиля:
сообщение 8.3.2012, 13:47
Сообщение #3


Профессионал
*****

Группа: Участник
Сообщений: 1112
Регистрация: 6.3.2009
Из: Ростов-на-Дону
Пользователь №: 591

Спасибо сказали: 264 раз(а)




Репутация:   44  


Цитата(Iron Bug @ 8.3.2012, 14:08) *
скорее всего, тут общесишная опечатка:
в конструкциях типа template1_name<template2_name<> > важно соблюдать пробел между последними закрывающими угловыми скобками "> >" иначе компилятор рассматривает эту конструкцию, как оператор сдвига >>.

Вроде с C++11 эту ситуацию прояснили и разрешили писать слитно (новым компиляторам должно быть все равно).
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Iron Bug
  опции профиля:
сообщение 8.3.2012, 15:42
Сообщение #4


Профессионал
*****

Группа: Модератор
Сообщений: 1611
Регистрация: 6.2.2009
Из: Yekaterinburg
Пользователь №: 533

Спасибо сказали: 219 раз(а)




Репутация:   12  


Цитата(BRE @ 8.3.2012, 16:47) *
новым компиляторам должно быть все равно.

ну, может совсем новым и всё равно. а ещё до недавнего времени было нет. так что лучше исключить сразу подобную ситуацию, она обычно порождает множество непонятных ошибок компилятора.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
pe1e
  опции профиля:
сообщение 8.3.2012, 16:08
Сообщение #5


Новичок


Группа: Новичок
Сообщений: 2
Регистрация: 7.3.2012
Пользователь №: 3251

Спасибо сказали: 0 раз(а)




Репутация:   0  


спасибо за конструктивную критику относительно моего русского - исправлюсь! :)
а что касается двойных скобочек,то VS2010 абсолютно ровно на это. В итоге пришел к выводу,что Бетта-распределение не генерирует случайных чисел и нашел аппроксимацию через равномерное распределение.

спасибо большое всем кто поучаствовал в этой теме! :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
BRE
  опции профиля:
сообщение 8.3.2012, 16:09
Сообщение #6


Профессионал
*****

Группа: Участник
Сообщений: 1112
Регистрация: 6.3.2009
Из: Ростов-на-Дону
Пользователь №: 591

Спасибо сказали: 264 раз(а)




Репутация:   44  


Цитата(Iron Bug @ 8.3.2012, 16:42) *
так что лучше исключить сразу подобную ситуацию, она обычно порождает множество непонятных ошибок компилятора.

Пока компиляторы не будут использовать режим C++11 по умолчанию нужно будет разделять. Я, скорее всего, и потом буду разделять ибо "привычка выработанная годами". :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 22.11.2024, 0:55