не генерирует Бета-распределение, ошибка в variate_generator |
Здравствуйте, гость ( Вход | Регистрация )
не генерирует Бета-распределение, ошибка в variate_generator |
pe1e |
7.3.2012, 21:46
Сообщение
#1
|
Новичок Группа: Новичок Сообщений: 2 Регистрация: 7.3.2012 Пользователь №: 3251 Спасибо сказали: 0 раз(а) Репутация: 0 |
Здравствуйте!
Я занимаюсь научной деятельностью,а конкретно моделированием стахостических процессов и проверкой статистических гипотез. Недавно столкнулся с библиотекой Boost, поэтому еще не совсем понимаю концепцию ее, хотя не скрываю,что не совсем понимаю открытые исходные файлы библиотеки. Проблема заключается в следующем: генератор случайных числе для Бета-распределения выдает ошибку на следующий код
следующие ошибки: 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 |
скорее всего, тут общесишная опечатка: в конструкциях типа template1_name<template2_name<> > важно соблюдать пробел между последними закрывающими угловыми скобками "> >" иначе компилятор рассматривает эту конструкцию, как оператор сдвига >>. Вроде с C++11 эту ситуацию прояснили и разрешили писать слитно (новым компиляторам должно быть все равно). |
|
|
Iron Bug |
8.3.2012, 15:42
Сообщение
#4
|
Профессионал Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: 12 |
|
|
|
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 |
так что лучше исключить сразу подобную ситуацию, она обычно порождает множество непонятных ошибок компилятора. Пока компиляторы не будут использовать режим C++11 по умолчанию нужно будет разделять. Я, скорее всего, и потом буду разделять ибо "привычка выработанная годами". |
|
|
Текстовая версия | Сейчас: 22.11.2024, 17:34 |