C代码:使用概率的方法计算圆的面积


#include <stdlib.h>
#include <time.h>
#include <stdio.h>

/*计算圆的面积*/
//函数功能:产生[0,1]里的随机小数
double randomnumber()
{
	double d=((double)rand())/RAND_MAX;
	return d;
} 

//函数功能:给定一个圆半径,计算圆的面积
double circleArea(double r)   //圆的半径为r,圆的外接正方形的边长为2r,圆的面积仅由半径r决定
{
	double x,y;           //随机产生的点的横坐标与纵坐标
	int times=0;          //计算点落在圆里的次数
	int i = 0;	      //for循环的计数器
	int cycle = 10000000; //for循环的执行次数,该次数越大,计算结果越接近真实值。
	double area = 0;//圆的面积
	for(i=0;i<=cycle;i++) //循环执行10000000次,通过使用大量的循环次数来提高精度。
	{
		x=randomnumber()*r;//点的横坐标=[0,1]里的一个随机小数×半径
		y=randomnumber()*r;//点的纵坐标=[0,1]里的一个随机小数×半径
		if(x*x+y*y<=r*r)   //如果点落在圆的内部,即x^2+y^2<=r^2,times自加
			times++;   
	}
	area=(float)times*(4*r*r)/cycle;//面积=((点落在圆里的次数)/循环次数)×圆的外接正方形的面积
	return area;    //返回圆的面积
}

int main()
{
	/*
	初始化随机函数种子,srand((unsigned)time(NULL));
	是拿系统时间作为种子,由于时间是变化的,种子变化,可以产生不相同的随机数。
	使用时,参数可以是unsigned型的任意数据,比如srand(10);如果不使用srand,
	而用rand()产生的随机数,在多次运行,结果是一样的。
	*/
	srand((unsigned)time(NULL));
	printf("圆的面积=%.1f\n",circleArea(10000));
	int i =0;	
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值