我正在使用normal(mean, sigma)
生成均值和sigma的正态分布随机数。我的sigma是8db,平均值是0。但是当我做正态(均值,sigma)时,我总是得到负值。我有什么办法可以得到正数?
最佳答案
您不只是简单地调用normal(double mean, double sigma)
。
而是调用double r8_normal ( double a, double b, int &seed )
,其中a
是平均值,b
是sigma,seed
初始化随机数生成器。
我能够在您提供的link中编译和使用Normal库。
我下载了normal.cpp和normal.hpp。这些是旧文件,大部分是Fortran的翻译。
我必须通过在前两个声明中添加#include <complex>
并将complex
更改为std::complex
来修改normal.hpp,以使其在较低警告级别为我编译。
然后,我创建了一个测试驱动程序:
#include "normal.hpp"
#include <iostream>
int main() {
int seed = 123;
std::cout << r8_normal (0.0, 8.0, seed) << '\n'
<< r8_normal (0.0, 8.0, seed) << '\n'
<< r8_normal (0.0, 8.0, seed) << '\n'
<< r8_normal (0.0, 8.0, seed) << '\n'
<< r8_normal (0.0, 8.0, seed) << '\n';
}
这给出了这个输出
8.19933
1.45505
-2.42428
26.9111
12.8398
一切似乎都对我有效,均值= 0.0,西格玛= 8.0。
关于c++ - normal()始终为负值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11496419/