鱼C论坛

 找回密码
 立即注册
查看: 1262|回复: 6

利用蒙特卡洛模拟估算pi

[复制链接]
发表于 2020-12-19 11:11:28 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
原理解释:如下图所示

                               
登录/注册后可看大图

在正方形中随机生成点(个数为N),单位圆中橙色点个数为M,通过计算M/N即可近似得出pi的值
给定一个非负整数,表示一行中来自标准输入(stdin)的试验次数,将利用蒙特卡洛模拟估算的近似值输出到标准输出(stdout)。
当输入为0时,结束程序。
下面为输入输出示例

                               
登录/注册后可看大图

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-12-19 11:15:42 | 显示全部楼层
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include<math.h>
  4. #include<time.h>//调用头文件
  5. //利用蒙特卡罗算法计算pi的值
  6. int main()//主函数
  7. {
  8.         float x,y,pi;//定义单精度浮点型变量x,y,pi
  9.         long long C=0,D=0;
  10.         srand((unsigned)time(NULL));
  11.         for(long long i=0;i<100000000;i++)
  12.         {
  13.                 C++;//总次数
  14.                 x=(float)rand()/RAND_MAX;//随机横坐标
  15.                 y=(float)rand()/RAND_MAX;//随机纵坐标
  16.                 if(sqrt(x*x+y*y)<=1)//落入单位圆的条件
  17.                 D++;//满足条件的次数
  18.         }
  19.         pi=4.0f*(float)D/C;//利用单位圆的面积求pi的值
  20.         printf("pi=%f\n",pi);//输出pi的值
  21.         return 0;
  22. }
复制代码

之前学校作业
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-12-19 11:45:49 | 显示全部楼层

。。。为什么全是报错
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-12-19 11:47:30 | 显示全部楼层

我问的是python啊 不是c++
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-12-19 18:24:59 | 显示全部楼层
help
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-12-19 21:01:36 | 显示全部楼层
  1. import random
  2. while True:
  3.     n=eval(input('请输入数字:'))
  4.     if n==0:
  5.         print('程序结束!')
  6.         break
  7.     M=N=0#M为分子,N为分母
  8.     for i in range(n):
  9.         a=random.random()
  10.         b=random.random()
  11.         s=a**2+b**2
  12.         if s<=1:
  13.             M+=1
  14.         N+=1
  15.     pi=M/N*4
  16.     print('估计的pi值为: {}'.format(pi))
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-12-19 22:54:59 | 显示全部楼层

可以修改一下允许输入输出跟第二个图一样吗?另外输入为100000000时计算时间过长,有办法解决吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-28 01:29

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表