【第11题】蒙地卡罗法求 PI
2021/12/22 23:50:04
本文主要是介绍【第11题】蒙地卡罗法求 PI,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
说明
蒙地卡罗为摩洛哥王国之首都,该国位于法国与义大利国境,以赌博闻名。蒙地卡罗的基本原理为以乱数配合面积公式来进行解题,这种以机率来解题的方式带有赌博的意味,虽然在精确度上有所疑虑,但其解题的思考方向却是个值得学习的方式。
##解法
蒙地卡罗的解法适用于与面积有关的题目,例如求PI值或椭圆面积,这边介绍如何求PI值;假设有一个圆半径为1,所以四分之一圆面积就为PI,而包括此四分之一圆的正方形面积就为1,如下图所示:
如果随意的在正方形中投射飞标(点)好了,则这些飞标(点)有些会落于四分之一圆内,假设所投射的飞标(点)有n点,在圆内的飞标(点)有c点,则依比例来算,就会得到上图中最后的公式。
至于如何判断所产生的点落于圆内,很简单,令乱数产生X与Y两个数值,如果X2+Y2等于1就是落在圆内。
#include <stdio.h> #include <stdlib.h> #include <time.h> #define N 50000 int main(void) { int i, sum = 0; double x, y; srand(time(NULL)); for(i = 1; i < N; i++) { x = (double) rand() / RAND_MAX; y = (double) rand() / RAND_MAX; if((x * x + y * y) < 1) sum++; } printf("PI = %f\n", (double) 4 * sum / N); return 0; }
这篇关于【第11题】蒙地卡罗法求 PI的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-09-24数据结构进阶教程:从入门到初级水平提升
- 2024-09-24数据结构与算法进阶:初学者教程
- 2024-09-24大厂数据结构与算法教程:新手入门指南
- 2024-09-24大厂算法与数据结构教程:入门级详解
- 2024-09-24红黑树教程
- 2024-09-24链表教程:从入门到初级应用详解
- 2024-09-24平衡树教程:初学者必看的平衡树详解
- 2024-09-24数据结构高级教程:初学者指南
- 2024-09-24数据结构教程:从入门到初级应用
- 2024-09-24数据结构与算法教程:新手入门指南