用C++模拟蚊子的运动来检验概率论内容 C/C++

admin 4月前 80

背景:在一个很大的方形透明容器内,从某个位置放入适量的蚊子,等待几分钟后观察蚊子的分布.

#include <iostream>
#include <cstdlib>
#include <ctime>
#define random(a,b) (rand() % (b-a+1))+ a
using namespace std;
 
int main()
{
    srand((int)time(0));
    int x;
         int a[20001] = {0};//哈希数组,用于记录蚊子的位置
         int temp;
 
         for(int i = 0;i < 1000;++i) {//循环1000次代表放进1000只蚊子
                   x = 0;//x坐标为0,代表蚊子从容器中间放入
                   for(int j = 0;j < 20000;++j) {//循环20000次代表蚊子运动20000次
                            temp = random(0,200) - 100;//随机蚊子运动一次的距离,在-100到100之间
                            x += temp;
                            while(x < -10000 || x > 10000) {//若蚊子运动超出边界,则重新随机,直到蚊子的位置不超出边界
                                     x -= temp;
                                     temp = random(0,200) - 100;
                                     x += temp;
                            }
                   }
                   a[x+10000]++;//用哈希标记蚊子运动之后的x坐标
         }
         int b[80] = {0};//以下是把蚊子的位置按照每250一个区间分80个区间统计输出
         for(int i = 0;i < 80;++i) {
        for(int j = i * 250;j < (i+1) * 250;++j) {
            if(a[j] != 0) {
                b[i]++;
            }
        }
        cout << i + 1 << " " << b[i] << endl;
         }
         /*for(int i = 0;i <= 20000;++i) {
             cout << i + 1 << " " << a[i] << endl;
         }*/
        
    return 0;
}

当蚊子移动20000次的时候,得到的图像是不符合正态分布的:

当蚊子移动2000次的时候,得到的图像符合正态分布:

转自:https://www.cnblogs.com/chanji/p/12818554.html


少客联盟- 版权声明 1、本主题所有言论和图片纯属会员个人意见,与少客联盟立场无关。
2、本站所有主题由该帖子作者发表,该帖子作者admin少客联盟享有帖子相关版权。
3、少客联盟管理员和版主有权不事先通知发贴者而删除本文。
4、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者admin少客联盟的同意。
5、帖子作者须承担一切因本文发表而直接或间接导致的民事或刑事法律责任。
6、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责。
7、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意。
8、官方反馈邮箱:chinasuc@chinasuc.cn


上一篇:什么是少儿Python编程?这一篇就够啦!
下一篇:Go语言整型(整数类型)
Whatever is worth doing is worth doing well. juvenile hacker league
最新回复 (0)
    • 少客联盟
      2
        登录 注册 QQ登录(停用)
返回