Visual C++の今後
TR1
Visual C++ に含まれるのと含まれないのでは、世の中の扱いが大きく変わると思うので、これはとてもよいニュースだろう。
επιστημηさんのところで触れられている「メルセンヌ・ツイスタ」。とても良い乱数生成エンジン(らしい)。速度が非常に速い(らしい)。仕組みはよく知らないけど。ちなみに boost で書くと以下のようになる。
#include <iostream>
#include <boost/random.hpp>
using namespace std;
using namespace boost;
int main(){
mt19937 engine(1);
uniform_int<int> distribution(0, 10);
variate_generator<mt19937, uniform_int<int> > gen(engine, distribution);
for(int i = 0; i < 100; i++){
cout << gen() << endl;
}
return 0;
}
これの素晴らしいところは、乱数エンジンと分布を別に扱い、それぞれ好きに組み合わせられるというところだ。個人的には乱数エンジンよりも、分布の扱いが楽チンなのが重要だと思う。
分布のテンプレートは沢山あって、bernoulli_distribution(ベルヌーイ分布)やexponential_distribution(指数分布)なんてのもある(しつこいけど、仕組みは知らない)。
乱数エンジンの話になると「SFMT の boost 実装は?」ってなる。まだないはずなので誰かチャレンジしてみてはどうだろうか。欲しい人は結構いると思う。