use*_*221 6 c++ random double c++11
下面的代码显示了如何在C++ 11中随机加倍.在这个解决方案每一次,当我运行这个程序时,结果是一样的 - 我不知道为什么?当我运行程序时,如何更改它以获得不同的解决方案?
#include <random>
int main(int argc, char **argv)
{
double lower_bound = 0.;
double upper_bound = 1.;
std::uniform_real_distribution<double> unif(lower_bound, upper_bound);
std::default_random_engine re;
double a_random_double = unif(re);
cout << a_random_double << endl;
return 0;
}
//compilation: "g++ -std=c++0x program_name.cpp -o program_name"
Run Code Online (Sandbox Code Playgroud)
您需要在生成样本之前为随机数生成器播种.您在构造default_random_engine实例时执行此操作.例如:
std::random_device rd;
std::default_random_engine re(rd());
Run Code Online (Sandbox Code Playgroud)
如果您希望对使用的生成器更加规范,那么您应该指定一个而不是依赖于库实现者的选择default_random_engine.可用选项列于此处:http://en.cppreference.com/w/cpp/numeric/random#Predefined_random_number_generators
还要注意某些实现不使用非确定性源random_device.如果您遇到这样的实现,您需要为种子找到替代来源.
| 归档时间: |
|
| 查看次数: |
4360 次 |
| 最近记录: |