Boost logo

Boost Users :

From: Bo Peng (bpeng_at_[hidden])
Date: 2004-06-13 19:19:10


Dear List,

I am using the following (typical) code to use boost::random

---------------------------------------------
  typedef boost::mt19937 generator_type;
  typedef boost::variate_generator<generator_type&,
    boost::uniform_real<double> > rand01Generator;

  generator_type random_gen;
  boost::uniform_real<double> distrib(0.0, 1.0);
  rand01Generator rand01(random_gen, distrib);
----------------------------------------------

I would like to give users the ability to choose random number generators
through something like:

// global generator that is being used everywhere
generator global_generator;

void setGenerator(string type)
{
  if(type == "mt19937")
    global_generator = ...
  ...
}

However, the generators are templates so the type of global generator
can not be specified. Is there any workaround? It seems that a wrapper
class with instances of all available generators and some if-else
code can do this but there should be better ideas.

Many thanks in advance.

Bo


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