|
Boost Users : |
From: David Klein (d.klein_at_[hidden])
Date: 2006-06-06 10:51:21
boost-users-bounces_at_[hidden] wrote:
> Hi
>
> I am using boost/random library in order to create a normal
> distributed noise. I want to call my my_class::noise() functions
> several times,
> but I want to initialize the generator only once.
> I tried to declare and initialize the generator at the
> constructor of my_class, but then my_class::noise() doesn't
> recognized the generator. I wrote it the following way:
>
> my_class::my_class()
> {
> boost::mt19937 gen(42u);
>
> }
>
> my_class::noise()
>
> {
>
> boost::normal_distribution<
>
> float> n_d(5, 10); //n_d(mean,stdev)
>
> boost::variate_generator<boost::mt19937&,
> boost::normal_distribution<float> > normal(gen, n_d);
>
> return normal();
>
> }
>
>
>
> I guess I need to declare the generator at the header, and
> only initialize it at the constructor, but I don't know how to do it.
>
> Thanks for your help.
> Dvir
hi dvir,
this is untested, but should do what you want.
class my_class
{
boost::mt19937 gen_;
public:
my_class( void ) :
gen_(42u)
{
}
void
noise( void )
{
boost::normal_distribution<float> n_d(5, 10);
//n_d(mean,stdev)
boost::variate_generator<boost::mt19937&,
boost::normal_distribution<float> > normal(gen_, n_d);
}
};
HTH dave
Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net