| 乱数生成アルゴリズム |
|---|
| 標準ライブラリの乱数の雲 |
|---|
乱数の雲とは、乱数の分布の度合いを3次元の分布図で表したものです。
標準ライブラリの乱数の雲をみてみましょう。驚きの結果です。
| 乱数の雲を生成するプログラム |
|---|
以下の様なプログラムで、生成しています。
int i, j;
int H = 32767 / height;
for( i = 0; i < width; i++ )
{
srand( i );
for( j = 0; j < 1000; j++ ) rand(); // 100個捨てる
for( j = 0; j < 50; j++ )
{
dc.SetPixel( i, rand() / H, RGB( 255 - j * 5, 0, 0 ) );
}
}
|
| あゆしゃの乱数の雲 |
|---|
まずは、この雲を見てください。
| あゆしゃの乱数生成アルゴリズム |
|---|
以下のプログラムで、乱数を生成しています。
XORがいっぱいありますが、全然、難しいことは行っていません。
|
| あゆしゃの乱数生成クラス |
|---|
arand をクラスにまとめました。ただ、それだけですが。
class CARand
{
private:
UINT r;
public:
|
int H = ( int )( 0xFFFFFFFFUL / ( UINT )height );
for( i = 0; i < width; i++ )
{
CARand ar( ( UINT )i );
for( j = 0; j < 50; j++ )
{
dc.SetPixel( i, ar.arand() / H, RGB( 0, 0, 255 - j * 5 ) );
}
}
|
|
あゆしゃの乱数生成アルゴリズム
VS
メルセンヌ・ツイスター
|
|---|