- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试生成一系列符合指数分布的随机数。幸运的是,C++提供了这样的模板类exponential_distribution
,它可以根据指数分布生成浮点值,提供均值的倒数(即到达率)。
另一方面,每个生成的值代表两个随机事件之间的间隔,这两个随机事件是独立的,但在统计上由恒定的平均到达率定义,即它的 lambda,λ。所以 lambda 是平均值的倒数。
在生成这样的随机值后,我想检查生成的随机数是否准确,所以我根据生成的随机数计算到达率 lambda' = 生成的随机数(到达数)/the生成随机数的总和(持续时间)
,即到达率。
然而,结果表明 lambda
和 lambda'
非常不同。以下是我的代码,其中lambda=20.0
。
#include<iostream>
#include<random>
#include<fstream>
#include<map>
using namespace std;
int main(){
mt19937 mt; //The Mersenne Twister is a pseudorandom number generator (PRNG), default_seed is a member constant, defined as 5489u;
exponential_distribution<double> exponential_intervals(20.0);
double interval;
double timestamp = 0;
for(int j = 0; j < 20; j ++){
interval = exponential_intervals(mt);
cout<<interval<<endl;
timestamp += interval; //generate exponentional distribution randoms, in micro seconds
}
return 0;
}
生成的随机数是:
0.118112
0.0900931
0.00679023
0.173476
0.122309
0.0124894
0.0500325
0.0184205
0.00513157
0.0396175
0.016321
0.0104363
0.0395801
0.247252
0.157921
0.2822
0.167461
0.171627
总和为1.82
,所以lambda'=20/1.82=10.98
,这与lambda
有很大不同。
有人能告诉我如何提高生成的随机数的准确性吗?
最佳答案
分布的标准差与均值相同,mu = 1/lambda
。记住中心极限定理,对于样本大小 N
,样本均值的偏差大约为 mu/sqrt(N)
。对于 20 的样本量,这是相当大的 - 大约是您正在测量的值的 22% - 因此您可能会得到一个相当不准确的估计。
增加样本量,也许增加到 10000 以给出大约 1% 的偏差,给出更好的估计:http://ideone.com/9xjQwg
关于C++ exponential_distribution模板类生成非精确随机数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26687840/
关闭。这个问题是not reproducible or was caused by typos .它目前不接受答案。 这个问题是由于错别字或无法再重现的问题引起的。虽然类似的问题可能是on-topi
C++ 标准库 - 随机数生成和分布:如何设置指数分布的参数? 我有一个程序需要指数分布的随机数。我正在使用 C++11 随机数和分布库支持。 我有一个分布:std::exponential_dist
当我查看 std::exponential_distribution 的文档时,它似乎没有公开在运行时更改 lambda 参数的标准方法。 有一个param 方法,但它采用不透明的成员类型param_
出于某种原因,我无法使用 uniform_int_distribution (来自 C++ TR1 header )在 Mingw-w64 G++ 中,即使 exponential_distribu
我是一名优秀的程序员,十分优秀!