const-用蒙特卡洛方法求解圆周率

问题描述

用蒙特卡洛方法求解圆周率

//蒙特卡洛法求圆周率
#include
#include
#include
#include

using namespace std;

double FindPi(const long n)
{
srand(time(NULL));
long sum = 0;
double x = 0.0, y = 0.0;
for (long i = 0; i < n; i++)
{
x = (double)(rand())/(double)RAND_MAX;
y = (double)(rand())/(double)RAND_MAX;
if (x*x + y*y <= 1)
{
sum++;
}
if (i % 10000 == 0)
{
system("clear");
cout<<"运行了"<<i<<"次运算,完成了总运算的"<<(double)i/(double)n*100.0<<"%"<<endl;
}
}
return 4.0*((double)sum/(double)n);
}

int main()
{
long n = 0;
cout<<"输入模拟次数:";
cin>>n;
if (n <= 0)
{
cout<<"输入错误"<<endl;
exit(1);
}
double pi = FindPi(n);
cout.precision(50);
cout<<"模拟"<<n<<"次,pi = "<<pi<<endl;
return 0;
}

这个代码为什么算出来的总是在3左右,而不是3.14?

解决方案

选取的样本是不是太小了?改大点看看。

时间: 2024-08-03 20:35:06

const-用蒙特卡洛方法求解圆周率的相关文章

(转)Monte Carlo method 蒙特卡洛方法

转载自:维基百科  蒙特卡洛方法 https://zh.wikipedia.org/wiki/%E8%92%99%E5%9C%B0%E5%8D%A1%E7%BE%85%E6%96%B9%E6%B3%95   蒙特卡洛方法[编辑] 维基百科,自由的百科全书     蒙特卡洛方法(英语:Monte Carlo method),也称统计模拟方法,是二十世纪四十年代中期由于科学技术的发展和电子计算机的发明,而被提出的一种以概率统计理论为指导的一类非常重要的数值计算方法.是指使用随机数(或更常见的伪随机数

数组splice()插入方法求解......

问题描述 数组splice()插入方法求解...... 不知是夜深了脑子不转了还是啥,简单的数组插入居然出现了这么一个问题,求醒脑!!!!! var items = [2,4,6,8]; items.splice(items.length,0,10); console.log(items); //[2,4,6,8,10] 问题来了,,,,,,往下看.... var items = [2,4,6,8]; console.log(items.splice(items.length,0,10)); /

java-使用方法求解规则图形面积,其中规则图形包括圆,三角形,矩形以及梯形。

问题描述 使用方法求解规则图形面积,其中规则图形包括圆,三角形,矩形以及梯形. 使用方法求解规则图形面积,其中规则图形包括圆,三角形,矩形以及梯形. 解决方案 俗话说得好:自己动手,丰衣足食 解决方案二: http://zhidao.baidu.com/link?url=SUZPhFGpbHHMxyjBRBeGqeuXDkJfRYyX6BUCFyGyXdq0G-_vyw-HGWt1HGhY5RPPpaNQgNNob6VaQ8115M9Ba_ 解决方案三: 给出什么条件了吗?比如到底是按照圆的周长

java访问private方法求解

问题描述 java访问private方法求解 java里如何从一个类访问另一个类的private方法 求解,就是成员变量我都知道怎么办,方法不懂 解决方案 如果是内部类,可以访问,外部类,就不行了,你还是老老实实遵守面向对象的规则吧 解决方案二: 可以用反射,但是尽量不要破坏规则,别人用private,是有别人自己的用意的. 解决方案三: Java private方法访问 解决方案四: 既然是私有的当然无法访问 把它改成public就可以啊 解决方案五: 利用反射的原理就对私有的属性进行访问.如

服务器-如图 servlet无法调用dao中的add方法 求解

问题描述 如图 servlet无法调用dao中的add方法 求解 报空指针异常 解决方案 这个可以去百度或是谷歌 解决方案二: 关键不是你报异常.而是报什么异常.单看这些代码没用.把异常也贴出来?数据库没开启?对象插入报错?进没有进入addUser方法内部?这才是关键 解决方案三: 那肯定是add方法有问题,,具体要看抛的什么异常 解决方案四: 你得把异常的图发一下吧. 解决方案五: jQuery调用Servlet方法及注意事项

一份数学小白也能读懂的「马尔可夫链蒙特卡洛方法」入门指南

在我们中的很多人看来,贝叶斯统计学家不是巫术师,就是完全主观的胡说八道者.在贝叶斯经典方法中,马尔可夫链蒙特卡洛(Markov chain Monte Carlo/MCMC)尤其神秘,其中数学很多,计算量很大,但其背后原理与数据科学有诸多相似之处,并可阐释清楚,使得毫无数学基础的人搞明白 MCMC.这正是本文的目标. 那么,到底什么是 MCMC 方法?一言以蔽之: MCMC 通过在概率空间中随机采样以近似兴趣参数(parameter of interest)的后验分布. 我将在本文中做出简短明了

PHP类 const常量访问方法例子

例子.const常量访问  代码如下 复制代码 class Math {    const num=3.14;       public function showNum(){        return self::num;    } } echo Math::num."<br/>"; $math=new Math(); echo $math->showNum(); 结果: 3.14 3.14 例子,变量访问  代码如下 复制代码 class Math {    c

蒙特卡洛算法

从今天开始要研究Sampling Methods,主要是MCMC算法.本文是开篇文章,先来了解蒙特卡洛算法.  文章转载自:http://blog.csdn.net/acdreamers/article/details/44978591   Contents      1. 蒙特卡洛介绍    2. 蒙特卡洛的应用    3. 蒙特卡洛积分       1. 蒙特卡洛介绍      蒙特卡罗方法(Monte Carlo method),也称统计模拟方法,是二十世纪四十年代中期由于科学技术的   

&lt;转&gt;线性方程组求解

//解线性方程组 #include<iostream.h> #include<iomanip.h> #include<stdlib.h> //----------------------------------------------全局变量定义区 const int Number=15; //方程最大个数 double a[Number][Number],b[Number],copy_a[Number][Number],copy_b[Number]; //系数行列式