UNIX/LINUX srand48 および drand48 関数を C で記述する必要があります。シード値の設定と使用に行き詰まっています。私には2つの機能があります:
#include <math.h>
long int mfml_win_drandX0; //actual value used for generation
void srand48(long int seedval)
{
mfml_win_drandX0=seedval; //setting seed into mfml_win_drandX0
}
double drand48(void)
{
static const double a=0x273673163155,
c=0x13,
m=281474976710656;
/*EDIT: error was here*/
mfml_win_drandX0=fmod(a*mfml_win_drandX0+c,m);; //computing the next value
return mfml_win_drandX0/m;
}
しかし、使用する場合:
srand48(2) ;
for (int i=0;i<10;i++)
std::cout<<drand48()<<std::endl;
(mfml_win_drandX0) は変わらず、毎回同じ番号を取得します。この問題を解決するには?