See xllrandom for the gory details.
Hooking up the latest C++ version of the <random> library helped me learn a few new tricks. No more variate_generator
in C++, things just keep getting simpler and better.
To generate random variates using a distribution and an engine all you need to do is type dist(eng)
where dist
is a distribution and eng
is an engine. That is what this does, but it was not trivial to leverage the latest C++ goodness to make that happen.
C++ is strongly typed and distributions and engines all have different types. Base classes that use the NVI idiom, polymorphism, and a clever substitute for std::integer_sequence
I swiped from stackoverflow did the trick.
I work hard to be lazy and also had to solve the problem of distributions that take a variable number of parameters. I used the X macro trick http://www.drdobbs.com/cpp/the-x-macro/228700289 for that, incorporating Andrei Alexandrescu’s suggestion.
RIP Dr. Dobbs. It is a new world now that is difficult to keep up with. But fun. What a great time to be alive and have the opportunity to learn about all the amazing advances that are happening now.