一种计算π的方法
2013-06-20 11:11
225 查看
假设点可以均匀的扔到正方形中。如果一共扔N次,其中M次扔进内切圆内,则可以推导出计算π的公式:
![](http://images.cnitblog.com/blog/408927/201306/19221958-f0ed39b8e80b44938495101cc15b59c9.x-png)
![](http://images.cnitblog.com/blog/408927/201306/19222003-a69cb30808f34a1794873f0cd449c861.x-png)
[b]随机计算π[/b]
大体思路:获得随机数(x,y),判断x*x + y*y是否在单位圆内,可以得到M的个数。
程序:
注意:有关随机数的获取可以参考:/article/4722595.html
一组结果:
![](http://images.cnitblog.com/blog/408927/201306/19222059-569fa21edaa24f94abadefea158df622.x-png)
[b]画出网格计算π[/b]
大体思路:
![](http://images.cnitblog.com/blog/408927/201306/20111000-78b2d89211e74e21888e8232159f14a4.x-png)
程序:
一组结果:
[b]随机计算π[/b]
大体思路:获得随机数(x,y),判断x*x + y*y是否在单位圆内,可以得到M的个数。
程序:
#include <stdio.h> #include <stdlib.h> #include <time.h> #define N 1000 int main() { int i, M=0; double x, y, pi; srand((int)time(NULL)); for (i=0; i<N; i++) { x = rand() / (double)RAND_MAX; y = rand() / (double)RAND_MAX; if (x*x + y*y < 1) M++; } pi = (4.0 * M) / N; printf("pi:%f\n", pi); return 0; }
注意:有关随机数的获取可以参考:/article/4722595.html
一组结果:
[b]画出网格计算π[/b]
大体思路:
程序:
#include <stdio.h> #include <stdlib.h> #include <math.h> #define n 10000000 int main() { int i; double sum = 0; for (i=0; i<n; i++) sum += sqrt((double)n*n - (double)i*i); printf("%f\n", 4.0*sum /n/n); }
一组结果:
相关文章推荐
- 一种基于透明计算的智能终端软件更新方法
- 一种可扩展的表达式解析及计算方法
- 计算幂的一种高效方法
- 用了一种以前没用过的方法来实现计算24点
- 计算图片中的物体的实际尺寸的一种方法
- 关于JOJ 2042的启发——一种写程序计算幂函数的方法
- 一种写程序快速计算常系数线性齐次递推关系的指定项的方法
- 计算结构体成员偏移地址的一种方法
- 一种改进的基于亚像素边缘的齿轮内径计算方法
- 一种计算MD5的实现方法
- 【JAVA】通过公式字符串表达式计算值,网上的一种方法
- RDD(转):一种基于内存的集群计算的容错性抽象方法(二)
- 一种高精度低复杂度的非线性函数定点计算方法
- [个人论文]一种基于GPU并行计算的MD5密码解密方法
- Unity 往复运动的一种计算方法
- 一种高精度低复杂度的非线性函数定点计算方法
- 网格顶点方向的计算(一种新的面积加权方法)
- 计算并设置ListView的高度,防止嵌套ScrollView监听出现问题,(两种方法,一种自定义,一种测量)
- 异构计算-1-10x10:一种异质性和提高能量效率的通用架构方法
- mrp-材料毛需求的一种计算方法