Visual C++でdrand48()

少し前にdrand48()を使用する場面に遭遇しました。drand48()は0から1の疑似乱数を発生させます。作業環境はVisual Studio 2017 C++でした。

 

さて、実行してみようと思った矢先です。エラーが消えません。調べてみたらVisual Studioの標準関数ではないらしい...。関連するsrand48()も標準関数ではないそうです。(srand48()はdrand48()を使う前に、呼び出したdrand48が正しく動作するために初期設定を行う関数) この2つは UNIX系OSが用意している関数だそうです。

 

関数がないなら作ればいいじゃないか!ということで作ってみました。

f:id:kikikikina:20170518212152p:plain

なんとこれだけ。簡単ですね。rand()で疑似乱数を生成し、それをRAND_MAXで割った値を返しています。本当に0から1のの範囲でしょうか?いくつか表示してみましょう。

f:id:kikikikina:20170518212610p:plain

drand48()の値を20回表示します。

f:id:kikikikina:20170518213053p:plain

0から1の範囲ですね。これで完成です。

 

ソースはここに置いておきますね。

https://github.com/kikikikina/drand48/blob/master/main.cpp