C ++ 11中的随机,具有闭区间

时间:2014-03-22 18:27:41

标签: c++ c++11 random

以下代码生成默认值[0,PI)之间的数字:

#include <iostream>
#include <random>
int main()
{
  std::random_device rd;
  std::default_random_engine re(rd());
  //std::uniform_real_distribution<double> unifPhi(0., M_PI);//[0.,PI) // <- default
  std::uniform_real_distribution<double> unifPhi{0.0, std::nextafter(M_PI, 2.*M_PI)};//probably [0.,PI]
  for(unsigned int i=0u;i<10u;++i)
    std::cout << unifPhi(re) << std::endl;

  return 0;
}

我想在[0,PI]之间生成一个数字。要清楚,第二个括号必须是],而不是)(关闭间隔)。

有人可以告诉我上面的代码是否正确吗?

1 个答案:

答案 0 :(得分:3)

看起来很正确。看here,它表示生成的值将在[a, b)范围内。由于a = 0b是大于M_PI的最小数字,因此您应该在[0, PI]中获得一个值。