2025年C++高尔顿钉板实验

C++高尔顿钉板实验高尔顿钉板实验是由英国生物统计学家高尔顿所设计的研究随机现象的模型 模型大致如下 从入口处放进小圆玻璃球 使其能够从钉板中穿过 当小圆球向下降落过程中 碰到钉子后都以 50 的概率向左或右 到达下一层钉子 直到滚到底板的一个格子中为止 只要球的数量够大

大家好,我是讯享网,很高兴认识大家。

高尔顿钉板实验是由英国生物统计学家高尔顿所设计的研究随机现象的模型。

模型大致如下:

从入口处放进小圆玻璃球,使其能够从钉板中穿过,当小圆球向下降落过程中,碰到钉子后都以50%的概率向左或右,到达下一层钉子。直到滚到底板的一个格子中为止。只要球的数量够大,它们就能在底板将堆成近似于正态的密度函数图形(也有人说是二项分布,为了方便大家参考就都写出来了)。


讯享网

具体代码如下:

这里用的是系统时间的奇偶性来做的随机,相较于随机数种子我觉得这种方式更严谨。

#include <cstdlib> #include <ctime> #include <iostream> using namespace std; int a[10005][10005]; int ron[10005]; int od(int a) { if (a % 2 == 0)return 1; else return 0; } int main() { int m = 150;//层数 int n = 10000;//小球个数 srand(time(NULL));//随机数 for (int i = 1; i <= n; i++) { for (int j = 1; j <= m; j++) { a[i][j] = od(rand()); } } for (int i = 1; i <= n; i++) { int q = 1; for (int j = 1;j <= m - 1; j++) { q += a[i][j]; } ron[q]++; } for (int i = 1; i <= m; i++) { cout << "容器" << i << " "; for (int j = 1; j <= ron[i]; j++) { cout << "*"; } cout << endl; } for (int i = 1; i <= m; i++) { cout << "容器" << i << " " << ron[i] << endl; } return 0; }

讯享网

注:表示层数和小球个数的n,m都是可以更改的,这里就随便写了两个值用于测试

这就是运行之后的结果(每次运行的结果都是不一样的):

小讯
上一篇 2025-03-04 21:27
下一篇 2025-01-05 09:57

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/20220.html