« ちょいモテ | Main | C++構造体とクラスの違い »

2006.10.03

乱数再び

ハッカーの楽しみから、nlz関数を作ってみたが、試験に使う乱数が
上手く作れない。標準のrand()関数だと、16bit分しかつくってくれない。
いよいよ温存しておいたboostの出番だな。



#include < iostream >
#include < boost/random.hpp >

using namespace std;
using namespace boost;

int main(void)
{
minstd_rand gen;
cout << hex;
for(int i=0;i<100;++i){
cout << gen() << endl;
}
return 0;
}

こんな感じで簡単にboost使えた。ていうか、portsで入れたらライブラリのパスとか
勝手に設定されている。ビバports!

乱数が出てきて自分の愚かさに気がつく。

4c63e5c
40886c6c
3bd43f64
4a1d30fe
5649530f
bf4e87d
889bb70
6a960023
31e46490
186e35ef
152bc87e
7ab1a591
7ed2acbc
e8947d7
6f711a82
4fa5eac8
56197b0c
4e990a89
4b39f24f
1350ccf2
20a44fa2

例えば32ビットの最上位ビットを調べるのに欲しいデータってのは、
0x00001234とか、0x0001010Fとか、0x000000032とか、もっと上位に
0が集まってくれないと意味がない。

最上位の4bitが0になる可能性ってその時点で1/16、00が続くとなると
1/256か。

バイト毎に乱数を作って3/4くらいでそのバイトを0にするとか、なんかしないと
乱数の意味がないな。

ランダム検証の難しさを身にしみた一日でした。

|

« ちょいモテ | Main | C++構造体とクラスの違い »

Comments

Post a comment



(Not displayed with comment.)




TrackBack

TrackBack URL for this entry:
http://app.cocolog-nifty.com/t/trackback/18154/12131662

Listed below are links to weblogs that reference 乱数再び:

« ちょいモテ | Main | C++構造体とクラスの違い »