忘れた頃にふと必要になるので自分用にメモしておきます。
C++11には新しい乱数ライブラリが標準で用意されました。
もちろん従来の乱数rand()も使えますが、内部の実装が決まっていないのと、またその実装について様々な問題点が指摘されていることもあり、C++11ではより新しく使いやすい乱数が定義されたのでした。
これが int rand2(); みたいに定義されていれば使う側としては簡単なのですが、残念ながら使うにはもう少し長い構文が必要になります。
(何も考えず乱数を使いたい人にはかなりマニアックな話題だと思います。C++11の実装の話と乱数の話を行ったり来たりします。)
結論だけ書くと、以下のように乱数myrandを作ることができます。
#include <random> #include <functional> #include <ctime> auto myrand = std::bind(std::uniform_int_distribution<int>(0, 99), std::mt19937(static_cast<unsigned int>(time(nullptr)));
例によってコンパイル時に-std=c++11 オプションをつけて下さい。