(1)巴福昂投针:投针总次数n分别取1000、5000和10000

#include

#include

#include

#include

int main ()

{

int i;

float m=0,x,y;

srand(time(NULL));

for (i=1;i<=1000;i++)

{

x=rand()%10001/10000.0;

y=rand()%10001/10000.0;

if (sqrt(x*x+y*y)<=1)

m=m+1;

}

printf("pi=%f",(m/(i-1))*4);

}

运行结果

1000次时多次运行后找一个中位数

5000次时多次运行后找一个中位数

10000次时多次运行后找一个中位数

(2)布丰投针:投针总次数n分别取1000、5000和10000

#include

#include

#include

#include

int main()

{

float i,m=0;

double x,y;

srand(time(NULL));

for (i=1;i<=1000;i++)

{

x=rand()%10001/5000.0;

y=rand()%31416/10000.0;

if (x<=sin(y))

m=m+1;

}

printf("%lf %lf",i,m);

printf("pi=%lf",(i-1)/m);

}

注:xy取随机数时位数相同才能接近真实pi值

否则随机数取的概率和真实不符,数据差异极大

运行结果

1000次时多次运行后找一个中位数

5000次时多次运行后找一个中位数

10000次时多次运行后找一个中位数

(3)随机整数互素:N取2^16-1次数n分别取1000、5000和10000

#include

#include

#include

#include

int maxcom (int x,int y)

{

int t;

t=x;

if(y

if (t==0)

{

printf("输入有误");

return t;

}

for(t;t>=1;t--)

{if(x%t==0&&y%t==0)return t;

}

}

int main()

{

int i;

int m=0,a,b,N=pow(2,16)-1;

srand(time(NULL));

for(i=1;i<=1000;i++)

{

a=rand()%N+1;

b=rand()%N+1;

if (maxcom(a,b)==1)m+=1;

}

printf("pi=%lf",sqrt(6*(double)i/m));

}

运行结果

1000次时多次运行后找一个中位数

5000次时多次运行后找一个中位数

10000次时多次运行后找一个中位数

![图片描述](https://dn-

simplecloud.shiyanlou.com/uid/314777/1479459867902.png-wm)

方法 1000次 5000次 10000次

巴福昂投针 3.33 3.27 3.26

布丰投针 2.86 2.84 2.82

随机整数互素法 3.17 3.14 3.13

算法效率及解的精度分析 第三种方法计算出的pi值最接近真实值

另两种误差都极大

关键技术 算法的设计

启发与心得 通过取大量随机数,利用概率,有时是解决不确定性算法的好途径。

蒙特卡罗方法计算圆周率C语言,用蒙特卡罗方法计算圆周率相关推荐

  1. 科学计算与matlab语言期末答案,科学计算与MATLAB语言期末答案

    科学计算与MATLAB语言期末答案 更多相关问题 "来而不往非礼也"符合人机交往的( )原则 若MD20中存放数据为-100.5,执行程序段"L MD20/RUD+/T ...

  2. c语言调用labview方法,LabVIEW与C语言接口的方法

    摘要介绍了一种LabVIEW与C 语言接口的方法,由实例证明,该方法高效.易行,是增强LabVIEW整体功能的一条有效的途径. 关键词虚拟仪器LabVIEW 动态链接库 LabVIEW是一种方便灵活的 ...

  3. r计算百分位数_R语言:用R计算各种统计值

    目录:求极差(range) 做频数分布表和频数分布图(graph of frequency distribution) 算术平均数(mean) 几何均数(geometric mean) 中位数与百分位 ...

  4. 条件表达式计算个人所得税c语言,个税的计算C语言实现,结果为什么是负的?...

    个税的计算C语言实现,结果为什么是负的?0 /*运算结果: please input your profit every month 9876 the tax of 9876 is -479.80 请 ...

  5. 科学计算与matlab语言期末答案,科学计算与MATLAB语言答案

    [单选题]用于定义按钮被单击的响应的属性是( ). [判断题]调用fplot3函数绘制空间曲线时,需要先计算曲线上各点的坐标. [单选题]当实验或测试所获得的样本数据有误差时,适合用来估算数据的方法是 ...

  6. 利用雅可比方法求线性方程组C语言_优化方法(一)

    1. 梯度下降法(Gradient Descent) 针对无约束最优化问题,梯度下降法是常用的最优化方法之一,其法实现简单,当目标函数是凸函数时,梯度下降法的解是全局解. 梯度下降法的优化思想是用当前 ...

  7. c语言程序 存款利息的计算,【c语言】存款利息的计算

    // 存款利息的计算.有1000元,想存5年,可按以下5种办法存: // 1.一次存5年期. // 2.先存2年期,到期后将本息再存3年期. // 3.先存3年期,到期后将本息再存2年期. // 4. ...

  8. JNI基础 c语言调用java方法

    利用c语言调用java无参的方法 java方法 com.example.jniparsedata.ParseData类中的方法     //打印     public void sayHelloFro ...

  9. matlab历史模拟法计算var,历史模拟法、蒙特卡罗模拟法计算VaR和ES值

    一.知识点介绍 1.1 历史模拟法 我们在之前有用到Delta-Normal的GARCH和RiskMetrics方法来计算VaR和ES,假设的是残差满足正态分布,对残差进行二次相关序列的建模并拟合残差 ...

  10. python圆周率后100位_Python实现计算圆周率π的值到任意位的方法示例

    这篇文章主要介绍了Python实现计算圆周率π的值到任意位的方法,简单分析了圆周率的计算原理,并结合实例形式分析了Python计算圆周率的相关操作技巧,需要的朋友可以参考下 本文实例讲述了Python ...

最新文章

  1. 硬币(计算n分有几种表示法)
  2. java编写socket使用bufferedReader.readLine()问题研究
  3. Open Street Map维基世界地图初探--概念、开发
  4. android import找不到文件夹,android 音乐播放器找不到源文件
  5. 男性加入防晒大军 购买遮阳伞比例同比增长23.54%
  6. Java-线程中sleep()、wait()和notify()和notifyAll()、suspend和resume()、yield()、join()、interrupt()的用法和区别
  7. 学习笔记之什么是持久化和对象关系映射ORM技术
  8. 实践解决跨域问题的三种方式剖析
  9. 51单片机基础教学(keil)
  10. SVN分支合并冲突解决
  11. opencv convertTo函数详解
  12. 云开发魔都团长头像制作微信小程序源码/带流量主
  13. R语言可视化——画脸谱图
  14. 【华为OJ】【042-矩阵乘法】
  15. RAID——独立冗余磁盘阵列
  16. DSF view Model
  17. 华擎主板设置来电开机_华擎主板BIOS文字说明
  18. 【干货长文】诺亚财富解读市场信息心理学
  19. 星光不问赶路人,时光不负有心人。
  20. stop slave mysql_mysql执行stop slave一直卡在Killing slave的状态

热门文章

  1. maven打包常用命令总结
  2. linux tex文件编译,用latexmk编译XeLaTeX tex文件
  3. python中os关于目录创建和文件移动操作
  4. 谷歌浏览器的笔记在哪里_推荐七款谷歌浏览器chrome在线网页阅读模式插件
  5. 从ResNet101到ResNet50
  6. Sipeed M1W内部esp8285固件烧录教程
  7. 频域波束形成matlab,关于FFT波束形成
  8. DVWA教程(一) —— Low级别
  9. 只要还在路上前行着的,那都是一个个闪闪发光惹人爱的人啊
  10. 共享茶室小程序开发解决方案