c++ - 泊松分布或正态分布

标签 c++ c++11 random normal-distribution poisson

如果需要在 [N, M] 范围内生成随机数,但更多的数字接近 avg ( N <= avg <= M),哪个更好用:

查看 cppreference 页面(页面底部)的示例,它们都生成了所需的内容:

poisson_distribution 在点 4:

0 *
1 *******
2 **************
3 *******************
4 *******************
5 ***************
6 **********
7 *****
8 **
9 *
10 
11 
12 
13

normal_distribution5 标准差 2:

-2 
-1 
 0 
 1 *
 2 ***
 3 ******
 4 ********
 5 **********
 6 ********
 7 *****
 8 ***
 9 *
10 
11 
12

选择什么?可能是别的东西?

最佳答案

如果您需要有限范围内的结果,那么这两种选择都不好。正态分布的尾部无限大,泊松分布的尾部无限大。至少您需要其中一个的截断形式。如果您没有截断,请注意法线始终关于其均值对称,而泊松分布可能会非常倾斜。这两种分布的不同之处还在于,正态分布是连续的,泊松分布是离散的,尽管您可以通过对结果进行分箱来离散化连续分布。

如果您想要在有界范围内的一组离散结果,您可以尝试缩放和移动 binomial distribution .带有参数 np 的二项式计算您从 n 试验中获得的“成功”次数,当试验是独立的并且所有试验都成功时概率 p。使 n = M - N 并将结果移动 N 以获得 [N,M] 范围内的结果。

如果您想要连续的结果范围,请考虑 beta distribution .您可以捏造参数以获得各种各样的分布形状,并将平均值调整到您想要的位置,然后缩放+移动到您想要的任何范围。

关于c++ - 泊松分布或正态分布,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30105250/

相关文章:

c++ - 比较在 std::vector 中有和没有事先调整大小的推送数据(100 万个数字)

c++ - 防止将临时对象作为参数传递给函数

c++ - Lambda表达式可以降级到C++ 98吗

java - 使用相同的种子或相同的随机流初始化多个分布?

javascript - 如何调整随 secret 码的长度?

Android GDB 未加载 C++ 共享库

c++ - luaL_checkudata继承检查

c++ - 如何使 C/C++ 编译器在用户指定的路径中查找 header

c++ - C++ XCODE需要帮助初学者使用

c - 为 RANSAC 采样生成两个随机数