下面的代码默认生成
[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]
之间的数。明确一下,第二个括号必须是]
而不是)
(表示闭区间)。
有人可以告诉我上面的代码是否正确吗?
[0,M_PI]
中float
/double
/long double
的数量是有限的,且恰好比区间[0, M_PI)
中的数量多一个。 - Casey