プログラムのバグが取れました!!!
まぁ、プログラムのコーディングミスなんていつもそうですが、今回もつまらないものでした…Orz
私が意図していた動作は-0.01〜+0.01までの一様乱数を生成するものだったのです。その部分にはC言語の関数であるrand()を利用していました。しかし、こいつは0〜RAND_MAX(32767だったっけ)の整数しか吐かないんですよね。そこで
rand() / RAND_MAX
として値の範囲を0〜1にしてやり、これから0.5を引いて0.02を掛けてやることで先の乱数を得ようとしたのです。
しかし、C言語の仕様の為単純にRAND_MAXで割ってやると整数値しか返さないためrand() / RAND_MAXはほとんど0しか吐きません。
そのため、
double( rand() ) / RAND_MAX
としてキャストしてやることで所望の動作を得ようとしたのですが、誤って
double( rand() / RAND_MAX )
としていたため、全く意味の無いキャストを行ってしまっていたのですOrz
他にも同様にして-1〜+1の一様乱数を吐かせているのですが、そこではきちんとキャストをしていたため、まったくそのミスに気付かなかったのです。今朝ようやくそれに気付いたのですが、嬉しいよりもどっと疲れが出ました(苦笑)
ほんと、先輩にはつきっきりで見てもらっていたのですが、アルゴリズムではなく凡ミスの為そこなんかは見てないですしね…。無事解決したので、ジュースくらいは差入れないとだめですね(安)
まぁ、おかげでしっっっっっっかりとプログラムをチェックしたので気付いていなかったメモリリークにも気付けたし、メモリリークチェッカツールの使い方も分かったし前向きに捉えるとしますか。
今度からはもっともっと精査してプログラムを組もう…Orz
でもバグ取れてほんとによかったーーーー!!!
0 件のコメント:
コメントを投稿