乱数生成
C++で乱数を生成するクラスを作成した
#include <stdio.h> #include <iostream> #include <ctime>//for time() #include <cstdlib>//for srand(),rand() class rndm{ private: bool flag_init; public: double Get(int min,int max); void Init(); rndm(); }; rndm::rndm(){ flag_init = false; } double rndm::Get(int min,int max){ if(!flag_init){ srand(time(NULL)); // 一度だけ現在時刻を乱数の種に設定する flag_init = true; } int lucky = 1000*min+rand()%(1000*max-1000*min); // min以上max未満の乱数を生成 return (double)lucky/1000; };
出来ればクラス名をrandomにしたかったが、そうすると
spread2d.cpp:79: 警告: statement is a reference, not call, to function ‘random’ spread2d.cpp:79: 警告: statement has no effect
と怒られる。名前を変えるとエラーが無くなるので、多分randomという名前がすでに定義されているのだろう。
ともかく、最初にrndmを定義した時は現在時刻で初期化するが、そのあとは得られた乱数自体を初期値にした。
こうする事で少しはまともな乱数が出来たとおもわれる