/********************************************************************************
1.1 求PI值
假设有一个半径为1000的圆形靶子(具体单位没有意义,不用写),我们随意对其进行射击;
那么,统计所有落在圆形外接正方形中的弹着点,可以很容易得知:
命中这个圆形靶子的概率是圆形的面积与外接方形面积的比。
***********************************************************************************/
#include <stdio.h>
#include <stdlib.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);/* 缺省为0表示系统自动生成种子 */
unsigned short Random(unsigned long n);/* 产生(0,n-1)之间的随机数 */
double fRandom(void);/* 产生(0,1)之间的随机数 */
};
RandomNumber::RandomNumber(unsigned long s)
{
if(s == 0)
randSeed = time(0);
else
randSeed = s;
}
unsigned short RandomNumber::Random(unsigned long m)
{
randSeed = multiplier * randSeed + adder;
return(unsigned short)((randSeed >> 16) % m);/* 取高16位,将0-65536之间的随机整数映射到m上 */
}
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));
}
/*******************************************************
** 概率计算π值
** 输入参数:测试半径
** 返回值:π值
** Author by:linxiaodong@star-net.cn
*********************************************************/
int main(int argc, char* argv[])
{
// long n = 1000;
long n = 10000000; //1000万
// long n = 100000000; //1亿
double pi = Darts(n);
printf("%.6f\n",pi);
return 0;
}
pi.rar_求π值
版权申诉
124 浏览量
2022-09-19
19:05:50
上传
评论
收藏 1021B RAR 举报
weixin_42653672
- 粉丝: 93
- 资源: 1万+
最新资源
- 3122080306 邹子轩 实验报告二.docx
- 基于STM32 NUCLEO板设计彩色LED照明灯(纯cubeMX开发)(大赛作品,文档完整,可直接运行)
- 发那科工业机器人保养大全
- Sphere.h
- REMD固有时间尺度分解信号分量可视化(Matlab完整源码和数据)
- 嵌入式系统双单片机STC89C52+STC15W104多功能学习板电路图可扩展 适用于单片机初学者和教学
- 基于STM32蓝牙控制小车系统设计(硬件+源代码+论文)大赛作品
- XILINXFPGA源码基于Spartan3火龙刀系列FPGA开发板VGA测试例程
- Java聊天室的设计与实现【尚学堂·百战程序员】
- python中matplotlib教程
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈