我尝试使用统一分布创建一系列随机数,其限制来自文件。
void initialize ( string file_in_name )
{
ifstream file_in;
int i;
int j;
//lbound= lower value bound, ubound=upper value bound
double lbound;
double ubound;
file_in.open ( file_in_name.c_str ( ) );
if ( !file_in )
{
cout << "\n";
cout << "Initialize - Fatal error!\n";
cout << " Cannot open the input file!\n";
exit ( 1 );
}
//
// Initialize variables within the bounds
//
for ( i = 0; i < NVARS; i++ )
{
file_in >> lbound >> ubound;
for ( j = 0; j < POPSIZE; j++ )
{
population[j].lower[i] = lbound;
population[j].upper[i]= ubound;
population[j].value[i] = randval ( population[j].lower[i],population[j].upper[i] );
}
}
file_in.close ( );
return;
}
其中randval是以下函数
double randval ( double low, double high )
{
double val;
mt19937 generator;
uniform_real<double> distribution(low, high);
val = distribution(generator);
return ( val );
}
我使用的分发来自tr1 / random,但每次使用执行代码时,结果都超出范围。更具体地说,我给出的文件的下限和上限分别等于-180和180,值为10 ^ 12。
可能是什么问题?