龙空技术网

C语言每日一练11——利用蒙特卡洛模拟计算圆周率Π

折腾的小大叔 182

前言:

现在朋友们对“蒙特卡洛算法c语言”大致比较珍视,大家都想要分析一些“蒙特卡洛算法c语言”的相关文章。那么小编同时在网上网罗了一些对于“蒙特卡洛算法c语言””的相关资讯,希望看官们能喜欢,兄弟们快快来了解一下吧!

题目:

利用蒙特卡洛算法模拟推算出圆周率Π大小。

思路:

蒙特卡洛算法简单来说就是利用随机数模拟随机情况出现的概率,在本小练中,计算圆周率,则就是向正方形中不断投坐标点,最后通过落在正方形内接圆内的随机数与总产生的随机数个数的比值可以计算出圆的面积,然后通过圆的计算公式就可计算出圆周率大小。通过该练习可以简单理解蒙特卡洛的思想。

实现代码:

/* ========================= Name        : TEST-30-20200610-1.c Author      : 折腾的小大叔 Version     : Copyright   : Your copyright notice Description : Monte Carlo method  PI ========================= */#include <stdio.h>#include <stdlib.h>#include <time.h>#include <math.h>static double CalcPIByMonteCarlo(int count){	double x,y;	int num=0;	double area;		srand((unsigned)time(NULL));	for(int i=0;i<count;i++)	{		x=rand()/(double)RAND_MAX-0.5;		y=rand()/(double)RAND_MAX-0.5;		if(x*x+y*y<=0.25)		{		   num++;		}	}	area=(double)num/count *1;	return area/0.25;}int main(void){	double pi;	int num=1;		printf("=模拟次数=   =Pi值=\n");	for(int i=0;i<7;i++)	{		num=num*10;		pi=CalcPIByMonteCarlo(num);		printf("%9d  %1.4f\n",num,pi);	}}

运行结果:

从上图中可以看出,随着模拟次数的增加,结果相对越来越接近真实值。

推荐阅读:

C语言每日一练10——数组元素逆序存放并显示

C语言每日一练9——小学智力题

C语言每日一练8——数组中最大值和最小值

标签: #蒙特卡洛算法c语言