用概率算法求pi值
来源:互联网 发布:免费室内设计软件 编辑:程序博客网 时间:2024/05/18 02:42
基本思想:以坐标原点为圆心作一个半径为1的单位圆,再作一个正方形与此圆相切(其实是否相切不重要,此处只是为了计算方便)。在这个正方形内任取n个点,并比较判断是否落在圆内,将落在圆内的点计作k,那么n与k的比值就可以看成正方形和圆的面积之比。即圆周率PI=4*k/n。
源码如下:
#include "stdafx.h"
#include "stdio.h"
#include "time.h"
const unsigned long maxshort = 65536L;
const unsigned long multiplier = 1194211693L;
const unsigned long adder = 12345L;
class RandomNumber
{
private:
unsigned long randSeed;
public:
RandomNumber(unsigned long s = 0);
unsigned short Random(unsigned long n);
double fRandom(void);
};
RandomNumber::RandomNumber(unsigned long s)
{
if(s == 0)
randSeed = time(0);
else
randSeed = s;
}
unsigned short RandomNumber::Random(unsigned long n)
{
randSeed = multiplier * randSeed + adder;
return(unsigned short)((randSeed >> 16) % n);
}
double RandomNumber::fRandom(void)
{
return Random(maxshort)/double(maxshort);
}
double Darts(long n)
{
static RandomNumber dart;
int k=0;
for(int i = 1; i <= n; i++)
{
double x = dart.fRandom();
double y = dart.fRandom();
if(x*x + y*y <= 1) k++;
}
return 4*(k/double(n));
}
int main(int argc, char* argv[])
{
long n = 10000000; //1000万
// long n = 100000000; //1亿
// long n = 1000000000; //10亿
double pi = Darts(n);
printf("%.10f/n",pi);
}
- 用概率算法求pi值
- 概率算法求PI
- 用概率模拟法求圆周率pi
- 用概率算法计算PI的近似值
- 用概率的方法计算Pi值
- MentoCarlo算法求PI值_Java实现
- 简单算法之概率计算PI
- 概率算法求定积分的值
- 求pi值
- 求PI的值
- 求pi的值
- 求pi的值
- 用概率法+积分法计算PI的值
- 用java的BigDecimal实现求PI(算法一)
- 用java的BigDecimal实现求PI(算法二)
- 【多核程序设计】蒙特卡洛算法求pi
- 4_蒙特卡罗算法求圆周率PI
- 求近似PI的值
- Converse4
- debian安装pidgin
- ROCKFORD LHOTKA的CSLA.NET,你用了吗?
- onlcp开发日志2007-11-27
- 利用Digester把XML转换为Java对象
- 用概率算法求pi值
- 进程间通信IPC
- Session机制详解
- DataGrid输出到Excel并进行格式化处理
- 菜鸟看java-异常处理小记
- GridView导出Excel研究
- 反射的技术实践
- 扩展GridView控件 - 自定义分页样式
- JavaScript的学习笔记-4(展开的层)