Individual random number daemons? Sent from my iPhone
On 18 May 2013, at 21:53, "Randy J. Ray" <rj...@blackperl.com> wrote: > (It's a pun, see, because I'm going to be asking about random number > generators... get it? Get it...?) > > (Short, TL;DR summary: I'm looking for a pRNG that can have multiple > instances at once that don't affect each others' stream of numbers. Does > Math::Random::MT meet that criteria?) > > I considered posing this to Perlmonks, but I just don't frequent that site > like I used to. And there are enough Large Perl Brains on this list that I > should get as good an answer, if not better. > > I am looking for a pRNG (pseudo-Random Number Generator) module. But I have > an unusual requirement-- I need to be able to instantiate multiple > *independent* generators, that can take seeds for the sake of reproducible > results. Let me explain... > > My current (paying) job is writing frameworks for automated QA of my > company's software (mainly the operating system that runs our storage > servers). We are working on a new approach to how we structure some of our > tests, and that happens to involve the potential of using some randomization > to select different paths over a directed graph. But, this being QA-oriented, > even if something runs with a degree of randomness to it, it needs to be > reproducible at a later time. So, no problem, just create a seed for srand() > and log that seed, and also provide users a way to specify a seed at the > start. Then you can just re-use the seed and reproduce your results. Right? > Well, not exactly... > > Other libraries I use, developed by other teams within our company, might > also have some randomization in them (like generating random names for disk > volumes, randomizing data generation for traffic testing, etc.). Not to > mention that we use no small number of CPAN modules, some of which might use > rand() as well. I could seed Perl's RNG with a specific seed, but if that run > has to try twice to generate a unique file name, instead of one or thrice, > that will affect the random numbers *my* code gets. > > So my thought was that sure there's a RNG module out there that is OO, and > encapsulates the seed and all other internal elements of the generation > process. One that I can instantiate multiple instances of, and have them > generate streams of random numbers that are independent of each other. The > closest I've found is Math::Random::MT, which implements the Mersenne Twister > pRNG. But I can't immediately tell from the docs whether the object instances > it creates are truly independent of each other or not. > > So, is this something anyone else here has dealt with? Are there modules I > just haven't stumbled upon yet, that would do this for me? Any help greatly > appreciated, as always. > > Randy > -- > """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" > Randy J. Ray Sunnyvale, CA http://www.rjray.org rj...@blackperl.com > twitter.com/rjray > Silicon Valley Scale Modelers: http://www.svsm.org