2009年6月29日月曜日

boost::random を標準で利用

こういう、しょうもないものなら、覚えがあるので、ポストしてみますた。
まあ、こんなページもあるみたいですが・・・。標準のものよりは随分まともで、妥協できる感じではないかと思います。

#ifndef RANDOM_GENERATOR_HPP
#define RANDOM_GENERATOR_HPP
//
// Distributed under the Boost Software License, Version 1.0. (See accompanying
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
//
// Copyright (c) 2009 OKI Miyuki (oki at hunes dot co dot jp)
//

#include <ctime>
#include <boost/random.hpp>

/// random generator class
/*!
  @note Default random generator is too poor.
*/
struct random_generator {
private:
  boost::mt19937 mt_gen_;
public:
  random_generator() : 
    mt_gen_(static_cast<unsigned long>(std::time(0))) 
  {}

  int operator () (int n) {
    // Using mod is not uniform. but behavior is less.
    return (mt_gen_() % n);
  }
};


#endif // RANDOM_GENERATOR_HPP

0 件のコメント: