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

简介:

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

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

include

include

include

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

相关文章
|
存储 C++ 容器
C++ 第九节——map/set(用法+底层原理+模拟实现)
们需要知道的是,Map和Set的底层都是红黑树。
572 1
C++ 第九节——map/set(用法+底层原理+模拟实现)
|
存储 C++
C++异常处理机制由浅入深, 以及函数调用汇编过程底层刨析. C++11智能指针底层模拟实现
C++异常处理机制由浅入深, 以及函数调用汇编过程底层刨析. C++11智能指针底层模拟实现
C++异常处理机制由浅入深, 以及函数调用汇编过程底层刨析. C++11智能指针底层模拟实现
|
存储 Java 应用服务中间件
线程池设计, 从简单的我们平常设计线程池图解,到生活中的类似线程池的处理现实场景, 到简单的C++模拟nginx写的单链表组织工作队列的简单线程池实现 + nginx 部分源码刨析
线程池设计, 从简单的我们平常设计线程池图解,到生活中的类似线程池的处理现实场景, 到简单的C++模拟nginx写的单链表组织工作队列的简单线程池实现 + nginx 部分源码刨析
线程池设计, 从简单的我们平常设计线程池图解,到生活中的类似线程池的处理现实场景, 到简单的C++模拟nginx写的单链表组织工作队列的简单线程池实现 + nginx 部分源码刨析
|
算法 编译器 C语言
【C++要笑着学】Functor 仿函数 | 模拟实现 stack & queue | 模拟实现优先级队列(二)
在上一章中,我们讲解了STL的栈和队列,本章我们来模拟实现一下它们。在讲解优先级队列的同时我们顺便把上一章提到的仿函数进行一个讲解,使用仿函数可以有效替换使用难以理解的函数指针的场景。我们通过仿函数 less 和 greater 去控制优先级队列的 Compare,从而能同时适配升序和降序。
100 0
【C++要笑着学】Functor 仿函数 | 模拟实现 stack & queue | 模拟实现优先级队列(二)
|
存储 C++ 容器
【C++要笑着学】Functor 仿函数 | 模拟实现 stack & queue | 模拟实现优先级队列(一)
在上一章中,我们讲解了STL的栈和队列,本章我们来模拟实现一下它们。在讲解优先级队列的同时我们顺便把上一章提到的仿函数进行一个讲解,使用仿函数可以有效替换使用难以理解的函数指针的场景。我们通过仿函数 less 和 greater 去控制优先级队列的 Compare,从而能同时适配升序和降序。
111 0
【C++要笑着学】Functor 仿函数 | 模拟实现 stack & queue | 模拟实现优先级队列(一)
【C++要笑着学】list 核心框架接口的模拟实现 | 运算符重载实现list迭代器 | 妙用模板实现const迭代器(二)
我们在上一章说过,list 其实就是带哨兵位循环双向链表而已,这种链表虽然结构复杂,但是实现起来反而是最简单的,我们在数据结构专栏中有过详细的讲解。
61 0
【C++要笑着学】list 核心框架接口的模拟实现 | 运算符重载实现list迭代器 | 妙用模板实现const迭代器(二)
|
存储 编译器 C语言
【C++要笑着学】list 核心框架接口的模拟实现 | 运算符重载实现list迭代器 | 妙用模板实现const迭代器(一)
我们在上一章说过,list 其实就是带哨兵位循环双向链表而已,这种链表虽然结构复杂,但是实现起来反而是最简单的,我们在数据结构专栏中有过详细的讲解。
158 0
【C++要笑着学】list 核心框架接口的模拟实现 | 运算符重载实现list迭代器 | 妙用模板实现const迭代器(一)
|
算法 区块链 C++
【C++要笑着学】vector 核心框架接口的模拟实现 | 基于STL3.0版本的简化vector | 浅谈迭代器失效问题(二)
STL 的源代码整体考虑的东西比较多,还要考虑和其他地方的结合,因此整体的设计是比较复杂的。基于这一系列原因,我们会以简单的形式去实现其核心框架接口,方便去学习 vector。
90 1
【C++要笑着学】vector 核心框架接口的模拟实现 | 基于STL3.0版本的简化vector | 浅谈迭代器失效问题(二)
|
存储 测试技术 区块链
【C++要笑着学】vector 核心框架接口的模拟实现 | 基于STL3.0版本的简化vector | 浅谈迭代器失效问题(一)
STL 的源代码整体考虑的东西比较多,还要考虑和其他地方的结合,因此整体的设计是比较复杂的。基于这一系列原因,我们会以简单的形式去实现其核心框架接口,方便去学习 vector。
67 1
【C++要笑着学】vector 核心框架接口的模拟实现 | 基于STL3.0版本的简化vector | 浅谈迭代器失效问题(一)
【C++要笑着学】深浅拷贝 | string 模拟实现 | 传统写法与现代写法(三)
本章将正式介绍深浅拷贝,在模拟实现 string 的同时带着去理解深浅拷贝。我们模拟实现 string类不是为了造更好的轮子,而是为了去学习它,理解它的本质!你自己造一次,心里会更清楚,也有利于加深对 string 的理解。
64 0