⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 random.hpp

📁 Bayesian Filtering Classe C++source
💻 HPP
字号:
/* * Bayes++ the Bayesian Filtering Library * Copyright (c) 2002 Michael Stevens * See accompanying Bayes++.htm for terms and conditions of use. * * $Id: random.hpp 564 2006-04-05 20:51:38 +0200 (Wed, 05 Apr 2006) mistevens $ *//* * Good random numbers from Boost *  Provides a common class  for all random number requirements to test Bayes++ */#include <boost/version.hpp>#include <boost/random.hpp>namespace Bayesian_filter_test{namespace{	// ISSUE variate_generator cannot be used without Partial template specialistion	template<class Engine, class Distribution>	class simple_generator	{	public:		typedef typename Distribution::result_type result_type;		simple_generator(Engine& e, Distribution& d)			: _eng(e), _dist(d)		{}		result_type operator()()		{	return _dist(_eng); }	private:		Engine& _eng;		Distribution& _dist;	};}//namespaceclass Boost_random{public:	typedef Bayesian_filter_matrix::Float Float;	typedef boost::uniform_01<boost::mt19937, Float> UGen;	Boost_random() : gen01(boost::mt19937()), dist_normal()	{}	Bayesian_filter_matrix::Float normal(const Float mean, const Float sigma)	{		boost::normal_distribution<Float> dist(mean, sigma);		simple_generator<UGen, boost::normal_distribution<Float> > gen(gen01, dist);		return gen();	}	void normal(Bayesian_filter_matrix::DenseVec& v, const Float mean, const Float sigma)	{		boost::normal_distribution<Float> dist(mean, sigma);		simple_generator<UGen, boost::normal_distribution<Float> > gen(gen01, dist);		std::generate (v.begin(), v.end(), gen);	}	void normal(Bayesian_filter_matrix::DenseVec& v)	{		simple_generator<UGen, boost::normal_distribution<Float> > gen(gen01, dist_normal);		std::generate (v.begin(), v.end(), gen);	}	void uniform_01(Bayesian_filter_matrix::DenseVec& v)	{		std::generate (v.begin(), v.end(), gen01);	}#ifdef BAYES_FILTER_GAPPY	void normal(Bayesian_filter_matrix::Vec& v, const Float mean, const Float sigma)	{		boost::normal_distribution<Float> dist(mean, sigma);		simple_generator<UGen, boost::normal_distribution<Float> > gen(gen01, dist);		for (std::size_t i = 0, iend=v.size(); i < iend; ++i)			v[i] = gen();	}	void normal(Bayesian_filter_matrix::Vec& v)	{		simple_generator<UGen, boost::normal_distribution<Float> > gen(gen01, dist_normal);		for (std::size_t i = 0, iend=v.size(); i < iend; ++i)			v[i] = gen();	}	void uniform_01(Bayesian_filter_matrix::Vec& v)	{		for (std::size_t i = 0, iend=v.size(); i < iend; ++i)			v[i] = gen01();	}#endif	void seed()	{		gen01.base().seed();	}private:	UGen gen01;	boost::normal_distribution<Float> dist_normal;};}//namespace

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -