std::random

Boost.randomのメルセンヌツイスター(あんまし偏らない乱数)がstd::tr1に入っていたので使ってみた。

#include <functional>
#include <iostream>
#include <algorithm>
#include <random>
#include <time.h>
using namespace std;

int main(){
  // 現在時刻をシードにする
  mt19937 engine(static_cast<unsigned long>(time(0)));
  // 乱数範囲を設定
  uniform_int<int> dist(-100,100);
  // ラムダ式使って、上記ふたつを一つのfunctionalオブジェクトにブチ込む
  function<int ()> mt_rand = [&]{ return dist(engine);};
  // -100〜100までのあんまり偏らない乱数を吐き出す
  cout << mt_rand() << endl;
  cout << mt_rand() << endl;
  cout << mt_rand() << endl;
}

これで取り出せる。実にすばらしい。