用C语言实现布丰投针计算圆周率问题
今天遇到一个布丰投针的问题,要用编程来实现,我就看着关于布丰投针的说明和简化公式,提炼出了需要的地方
1. 针长为二分之一平行线之间间距的时候结果最为接近
2. 圆周率等于二倍的针长比上平行线间距与概率的积
3. 针的中心点到最近的平行线的距离小于针与平行线之间夹角的正弦乘以针长的一半,则代表针与平行线相交
4. 针与平行线相交的个数比上总投针的个数就可以得到概率
(因为本人数学实在渣到令人发指,所以还是依靠友人的数学能力才将某些部分弄对)
接下来就是需要利用C代码来实现的需求:
1. 输入投针次数
2. 输出圆周率
代码中的逻辑就是输入投针次数,模拟一遍投针实验,然后得到概率,将概率带入计算圆周率的公式,最后输出圆周率
(因为有时候看贴在这里的代码有时不是很方便,所以我截了图,因为之前遇到过整形的相除出现问题的情况所以我在运算中都加了强转,大神看到千万不要嘲笑小的,毕竟我胆小)
(在C中 sin函数的参数是弧度,而我随机产生的是夹角的角度,因为还要将角度转换成弧度进行计算)
(平行线的间距修改成其他值最后输出的结果也是3.0到3.3之间,所以我觉得也许大概可能就是这样的逻辑了吧,如果有哪位大佬能写出对的投针代码,教教我吧T_T)
首先是引入头文件和定义平行线间距跟针长以及要用到的两个函数
其次就是模拟实验的函数
最后是求圆周率的公式
然后在主函数中进行输入输出就好了
附:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>#define A 100
#define L (A / 2)double P(int n);
double get_pi(int n);int main()
{int num;printf("输入要投的针数:");scanf("%d", &num);printf("pi = %lf\n", get_pi(num));return 0;
}double P(int n)
{double p;float distance, angle;int i, count = 0;srand(time(NULL));for(i = 0; i < n; i++){distance = rand() % (L + 1);angle = rand() % 91;if(distance < (sin(angle * M_PI / 180) * (L / 2))){count++;}}p = (double)count / (double)n;return p;
}double get_pi(int n)
{return 2.0 * (double)L / ((double)A * P(n));
}
用C语言实现布丰投针计算圆周率问题相关推荐
- R语言对布丰投针(蒲丰投针)实验进行模拟和动态可视化生成GIF动画
最近我们被客户要求撰写关于动态可视化的研究报告,包括一些图形和统计输出. 介绍 布丰投针是几何概率领域中最古老的问题之一.它最早是在1777年提出的.它将针头掷到有平行线的纸上,并确定针和其中一条平行 ...
- 布丰投针java实现,MATLAB模拟布丰投针实验
MATLAB模拟布丰投针实验 标签(空格分隔): 算法 Buffon's Needle 桌面上有距离为a的若干平行线,将长度为L的针随机丢在桌面上,则这根针与平行线相交的概率是多少?假定L < ...
- 布丰投针试验的仿真和误差估计
布丰投针试验 一.试验原理 1.试验步骤 2.理论概率及π\piπ的计算与误差 二.Python代码的实现 一.试验原理 1.试验步骤 1.选一个长度为lll的针.再选取一张白纸,上面划分许多平行 ...
- MATLAB模拟布丰投针实验
MATLAB模拟布丰投针实验 标签(空格分隔): 算法 Buffon's Needle 桌面上有距离为a的若干平行线,将长度为L的针随机丢在桌面上,则这根针与平行线相交的概率是多少?假定L < ...
- 蒲丰投针实验原理_布丰投针实验 MATLAB仿真 以及报告
布丰投针实验原理.仿真过程以及 MATLAB仿真代码.完整的布丰投针实验报告. 以下内容无关: -------------------------------------------分割线------ ...
- 树的结点数+蒲丰投针概率
1.已知一棵度为k的树中有n1个度为1的结点,n2个度为2的结点,-,nk个度为k的结点,问该树中有多少个叶子结点? 设该树中的叶子数为n0个.该树中的总结点数为n个,则有: n=n0+n1+n2+- ...
- 蒲丰投针结果_只能用纸笔才能计算圆周率?蒲丰告诉你,投针游戏也可以
自从很久以前人们发现了存在圆周率π这个神奇的数字之后,便费尽一切心力来计算这个值.在那个数学工具比较匮乏的时代,人们能够做的就是根据圆周率的定义来计算.历史上,东西方几乎在同时发现了割圆术,虽然细节上 ...
- R语言-蒲丰投针问题(向量化)
蒲丰投针问题的具体过程及推导可参考百科,此处不再赘述,这里仅给出模拟步骤和实现代码. 蒲丰投针试验的模拟步骤 设定试验总次数 NNN,成功次数m=0m = 0m=0,针的长度为hhh,平行线间的距离为 ...
- c语言模拟随机投点计算概率,我写的蒲丰投针的程序(用概率学计算π),有问题求教...
谢谢各位的回答. 此题我已经解决了. 问题是我提议没理解清楚,估计还误导大家了. 蒲丰投针的平行线是一组的,我以为是2条.呵呵. 那么这样的话相交条件改一下,就行了. 下面是我的程序,有兴趣的朋友可以 ...
- 蒲丰投针计算机模拟ppt,蒙特卡罗模拟课件.ppt
<蒙特卡罗模拟课件.ppt>由会员分享,提供在线免费全文阅读可下载,此文档格式为ppt,更多相关<蒙特卡罗模拟课件.ppt>文档请在天天文库搜索. 1.蒙特卡洛模拟数学实验之前 ...
最新文章
- Mysql依赖库Boost的源码安装,linux下boost库的安装
- 腾讯优图10篇AAAI论文解析,涉及数学速算批改、视频识别和语义分割 | 附下载...
- windows系统中查看linux分区的三种方式
- 吴恩达机器学习笔记-应用机器学习的建议
- 千元显卡玩转百亿大模型,清华推出工具包BMInf让模型推理轻而易举
- 芭比扣了!Nacos中服务删除不了,肿么办?
- linux版vmware卡顿,Manjaro下Vmware安装的MacOS10.15遇到的性能问题导致几乎无法启动问题及解决...
- Hadoop单机模式安装入门(Ubuntu系统)
- BackTrack4安装中文语言包
- 计算机开放电子书 2016 归档
- [导入]代理猎手找大学代理
- C语言函数嵌套学习实例
- 快狗打车正式登陆港交所,“更美好,更绿色”的同城货运平台来了!
- linux——CPU使用率、内存使用率、磁盘使用率等详解
- 2017先给自己定一个小目标,比方说先挣一个亿
- html5柱状图模板,html5生成柱状图(条形图)
- 魅力网络技术博客图像处理正文 ps入门教程、ps修图基本工具使用方法视频教学...
- python制作相册_《自拍教程73》Python 自动生成相册文件夹
- HMM详解(NLP)全网少有的最清晰透彻全面解析
- 生活中的思维导图—读后感
热门文章
- vscode编写C++代码出现collect2.exe: error: ld returned 1 exit status问题的解决方案
- php 三个点的用法 function fun (...$arr){}
- NUCLEO L476RG学习笔记(六)定时器中断
- vue echarts柱状统计图,多组数据对比
- 民建李汉宇:运用大数据为监察体制改革插上科技翅膀
- 江南大学 超级计算机,基于分布式并行计算的高性能演化算法研究
- 学习记录-app渗透
- 杭州电子科技大学acm--2021
- 计算机科学箴言集 -- 编程珠玑续
- Codeforces Round #545 (Div. 2) C. Skyscrapers