//dsd的概率论大作业

平面上画着两条间距a的平行线,随机地向此平面任投掷一长度为l ( l < a )的针N次,观察针与直线相交的次数记为n,计算此针与直线相交的概率。

以x表示针的中点距离最近的一条平行线的距离,φ表示针与平行线的夹角,则可得0≤x≤a/2,0≤φ≤π,要使得针与平行线相交,必须保证x≤1/2lsinφ。

代码:

#include<stdio.h>
#define _USE_MATH_DEFINES
#include<math.h>
#include<stdlib.h>
#include<time.h>int main()
{long int n=0;   //相交次数long int N=0;   //投针次数int l=100;   //针的长度int a=200;   //平行线间距double distance=0;   //落点距离double angle=0;   //角度double P;        //频率double pi=0;   //最终得到piint i=0;       //循环变量printf("输入要投的针数:");   //确定实验次数scanf_s("%d", &N);srand(time(NULL));     for (i = 0; i < N; i++)      //进行循环试验{distance = rand() % (l + 1);angle = rand() % 91;if (distance <= 0.5 * l * sin(angle * M_PI / 180))n++;  //相交次数计数}P= (double)n / (double)N;pi=2.0 * (double)l / ((double)a * P);  printf("计算得到圆周率π为:%lf\n", pi);    //输出结果
}

注意:

  1. 强制类型转换才能克服整除;

  1. M_PI只有声明#define _USE_MATH_DEFINES后才可以使用参考的π值。

实验结果如下:

N(投针次数)

输出结果

10

3.333333

100

3.333333

1000

3.300330

10000

3.210273

100000

3.112065

1000000

3.132960

10000000

3.133065

100000000

3.131318

1000000000

3.131390

  1. 从实验结果可以看出,随着试验次数的增多,频率逐渐趋近概率,可以预见到如果试验次数足够多,能够得到更加精确的圆周率值。

  1. 由于C语言中rand函数实际上为伪随机数,所以得到的结果有一定的伪随机性。

  1. C语言中无法用弧度制表示角度,因此在程序中得到随机的角度angle值时,实际需要用math.h文件中自定义的π值进行一遍换算,在上述代码中M-PI将被扩展为3.14159265358979323846,这也带来了实验结果的不准确性,故而会影响最终输出的π的值。从表中也可以看到,结果始终与3.14159265……相差一定的偏差。

  1. 如果能有更好的转换角度的方式,也许可以提高c语言随机试验程序的精度。

代码内容参考了http://t.csdn.cn/IO92R。

利用蒲丰投针实验求π/c语言相关推荐

  1. 蒲丰投针计算机模拟ppt,蒲丰投针实验模课件.doc

    概率论与数理统计实验 蒲丰投针与蒙特卡罗法 班级 应数12级01班 学号 2012444086 姓名 张旭东 蒲丰投针与蒙特卡罗法 张旭东 2012444086 (重庆科技学院 数学与应用数学 ,重庆 ...

  2. 强化学习 蒲丰投针实验 蒙特卡洛算法

    目录 一.蒲丰投针实验 1.1背景故事 1.2原理介绍 二.蒙特卡洛方法 2.1方法介绍 2.2经验轨迹 2.3在线学习与离线学习 2.4数学原理 一.蒲丰投针实验 1.1背景故事 1777年,蒲丰请 ...

  3. Matlab模拟蒲丰投针实验计算Π值

    文章目录 1.前言 2.实验目的 3.实验原理 (1)问题描述 (2)问题求解 4.实验过程 5.实验结果 6.实验结论 7.Matlab代码 1.前言 学习了概率论,决定自己动手编程实现蒲丰投针实验 ...

  4. 一文读懂蒲丰投针实验

    这个博客源于概率论复习期间,蒙特卡罗方法的思想起源,这种求π\piπ的思路非常的巧妙 附:历史上用蒲丰投针实验估计圆周率的实验记录,来源 蒲丰投针 蒲丰投针实验是法国数学家.自然科学家"乔治 ...

  5. 【游戏仿真实验】Unity仿真蒲丰投针实验,丢针计算圆周率,丢了一百万次针得出的结果是...

    文章目录 一.前言 二.制作场景 1.制作针模型 2.桌面制作 3.平行线制作 三.物理仿真 1.桌面无反弹 2.针掉落 3.针滚动问题 4.针架到平行线上的问题 5.针与针相互影响的问题 四.UI界 ...

  6. 蒲丰投针实验的一些理解

    由于要做ppt这里把自己的代码先暂时放上来,不当之处请多指正! 实验过程: 1)取一张白纸,在上面画上许多条间距为a的平行线. 2) 取一根长度为l(l≤a) 的针,随机地向画有平行直线的纸上掷n次, ...

  7. 计算机投针实验程序,蒲丰投针实验SAS程序

    投针实验 data a; do i=1 to 5000; /*实验5000次*/ pi=constant('pi');/*得出pi真实值*/ x=0.5*ranuni(0);/*产生随机数,a=1*/ ...

  8. 蒲丰投针计算机模拟ppt,蒙特卡罗模拟课件.ppt

    <蒙特卡罗模拟课件.ppt>由会员分享,提供在线免费全文阅读可下载,此文档格式为ppt,更多相关<蒙特卡罗模拟课件.ppt>文档请在天天文库搜索. 1.蒙特卡洛模拟数学实验之前 ...

  9. 蒲丰投针与蒙特卡洛模拟

    昨天突然看到了蒲丰投针实验,于是想看看到底是怎么推导出来的,baidu上搜索了一下,发现就这篇文章写的比较好,而且也简单的讲解了一下蒙特卡洛方法,在此推荐之! 蒲丰投针与蒙特卡洛模拟.pdf 转载于: ...

最新文章

  1. 视频+课件| 室内动态变化场景中的相机重定位(CVPR2021)
  2. XHProf报告字段含义
  3. 深入了解数据人才 | 中国数据人才白皮书
  4. k3s containerd和docker命令对比表
  5. lisp 绘制立体感的五角星_几何作图的方法、例子、解答及札记
  6. Lambda表达式和闭包Closure
  7. 探索Julia(part14)--学生得分描述性统计案例
  8. [原创]windows server 2012 AD架构 试验 系列 – 15解决AD复制冲突
  9. linux的bash脚本
  10. 计算机主板 方便用户自己安装的是,电脑水冷安装教程步骤解析【图文】
  11. Unity 怎么把app改成中文名
  12. 动图:七分钟帮你理解什么是KMP算法?
  13. 微信小程序反编译工具及方法
  14. OSChina 周四乱弹 —— 你从小继承了程序员基因
  15. [业务流程]JWT实现单点登录(SpringBoot + Vue +axious)
  16. 女子花2万元雇友人杀逝世女街坊
  17. Linux 学习 第六单元
  18. PPC气箱脉冲除尘器
  19. python检索用人名查电话_创建一个将人名用作键的字典后,输入姓名查找值,返回错误...
  20. P4117 [Ynoi2018] 五彩斑斓的世界 题解

热门文章

  1. 独立公众号版本微信社群人脉系统社群空间站最新源码全开源
  2. c语言 设圆半径r,圆柱高h,求圆周长、圆面积、圆柱体体积
  3. linux 仿QQ 2.0版本
  4. idea查看项目pid_intellij idea 插件开发--快速定位到mybatis mapper文件中的sql
  5. 有什么计算机可以拆分数字,一招教你在Excel中将一个数字拆分为多个数字之和...
  6. 怎么修改服务器的刷新率,关于Linux系统中调整刷新率
  7. 山东教师教育网研修平台-报名
  8. ilitek win10 触摸屏驱动_大佬手机刷入win10系统开机 小米8多少原生系统可以尝鲜...
  9. windows server服务器杀毒软件推荐
  10. SKlearn学习笔记——XGBoost