まとめると、一様分布と正規分布の乱数を生成できるとのことです。carryアルゴリズム*2とZigguratアルゴリズム*3に関してはWikipediaをご参照下さいそれにしてもジグラットって。バーチャロンを彷彿させる。一様分布は、seedでインスタンスを生成した後、a.next()で新しい乱数を生成生成します。0;}出力結果0xc48029240x6f670ec90x4ec21e440xe40ce6710x5fcd40f90x3090cb5e0x5d55db310x7145ce590xc5efc30e0x7215b472と、こんな感じに32bitの乱数が生成されます。charやshortが必要だったらマスキングしましょう。この一様分布のスゴいところは、実装が掛け算とマスキングだけで行われていることです。OpenCVを使いながらも、libファイルとリンクしないでも、ヘッダだけで実装が完結しています。(unsigned)state;}なんと以上。内部の状態変数と掛け算と足し算を行うことで新しい数を生成します。実装が簡単なだけあって、速度もそこそこ出ます。試しに1000000回生成してみました。#用途によりますが、これぐらい速いんだったら様々な場面で活躍するのではないかと思います。参考までに、ヒストグラムを作ってみました。正規分布は、gaussianメソッドを呼ぶことでdouble型の値が返って来ますこのgaussianメソッドにはsigmaを渡すことができ、分散がsigmaになるような正規分布に則った値が生成されます。実際に使ってみましょう。ガウシアン分布の場合は2.43736e-005msです。10-20倍ぐらいガウシアンの方が遅いです。(一様分布が速いというべきか?)ついでに正規分布の様子をヒストグラムで見てみましょう。std::endl;}でグラフにしてみました。前述の通り、本来は大量のテストデータを生成するために使われています。size.height));}fill関数を使うと、配列の中身を乱数で埋めることができます。こちらの解説を始めるとOpenCVのテストの仕組みをまるっと解説することになるので、そちらは割愛。†RNGのuniformが軽い割に、そこそこ一様分布していたのには驚き。関して記事を書きたいのですが、今はまだ勉強中です。