tr1 / random的问题

时间:2016-06-25 05:46:55

标签: c++ random tr1

我尝试使用统一分布创建一系列随机数,其限制来自文件。

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。

可能是什么问题?

0 个答案:

没有答案