1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
|
// Copyright (C) 2006 Graydon Hoare <graydon@pobox.com>
//
// This program is made available under the GNU GPL version 2.0 or
// greater. See the accompanying file COPYING for details.
//
// This program is distributed WITHOUT ANY WARRANTY; without even the
// implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
// PURPOSE.
#ifndef __RANDOMIZER_HH__
#define __RANDOMIZER_HH__
// This is just a set of utility methods built on top of boost::random.
//
// Our purpose is to create a global randomization utility for unit
// tests. Nothing fancy.
#include <cstddef>
#include <boost/random/mersenne_twister.hpp>
struct randomizer
{
boost::mt19937 rng;
// uniform process in [0,n]
std::size_t uniform(std::size_t n);
// boolean process with prob(true) = p, prob(false) = 1-p.
bool bernoulli(double p);
bool flip(std::size_t n = 2);
};
#endif
// Local Variables:
// mode: C++
// fill-column: 76
// c-file-style: "gnu"
// indent-tabs-mode: nil
// End:
// vim: et:sw=2:sts=2:ts=2:cino=>2s,{s,\:s,+s,t0,g0,^-2,e-2,n-2,p2s,(0,=s:
|