算法_随机算法1_入门引例(根据随机数求圆周率pi)
来源:互联网 发布:import 引入js 编辑:程序博客网 时间:2024/05/17 00:55
我是野猪。
计算机的使用使我们的计算更加便利,也为一些问题的解决有了新的途径。对于圆周率的求取在计算机中我们可以模拟这样的一个行为,根据点数获取π值,具体的原理如图所示:
代码上则更加简单,具体如下:
public class GetPIByRandom { public static void main(String[] args) { int count = 10000; double pi = GetPIByRandom.getPI(count); System.out.println("当随机数达到"+ count +"时得出的圆周率pi值是"+pi); } /** * 获取pi值 * * @param count * @return */ private static double getPI(int count) { Random RAND = new Random((int) (Math.random() * 1000)); int innerCount = 0; for (int i = 0; i < count; i++) { double x = RAND.nextDouble() * 2 - 1; double y = RAND.nextDouble() * 2 - 1; double squareSum = x * x + y * y; System.out.println("随机点x="+x+",y="+y); if (squareSum < 1) { innerCount++; } } double pi = 4.0 * innerCount / count; return pi; }}
测试输入不同的n值:
当n=10000时,输出:当随机数达到10000时得出的圆周率pi值是3.1644;当n=100000时,输出:当随机数达到10000时得出的圆周率pi值是3.14348;
当n=1000000时,输出:当随机数达到10000时得出的圆周率pi值是3.140872;
当n=10000000时,输出:当随机数达到10000000时得出的圆周率pi值是3.1409188;
在一定程度上能反映π值的准确性。
PS:这里获取随机数有一个很重要的技巧就是把Math.random()产生的随机数当作 Random类的种子,以便Random获取随机数。
阅读全文
1 0
- 算法_随机算法1_入门引例(根据随机数求圆周率pi)
- 4_蒙特卡罗算法求圆周率PI
- 随机算法求圆周率演示程序源代码
- 蒙特卡罗算法计算圆周率PI(C++)
- 蒙特卡洛算法——投点求圆周率Pi
- 根据PI/4 = 1 - 1/3 +1/5-1/7+1/9求圆周率
- Java_算法_求素数
- 遗传算法_求最大值
- 算法竞赛_入门经典_刘汝佳__(1)
- 利用蒙特卡洛算法求圆周率
- 蒙特卡罗算法求圆周率 π
- ACM_数论_很牛的圆周率 PI 的计算
- 概率算法_伪随机数生成_抛硬币实验
- 概率算法求PI
- C++随机数求圆周率
- 算法竞赛入门经典_3.1_数组_逆序输出_开灯问题
- 常用算法_求平均值Test1
- 常用算法_求平均值Test2
- 教你解决Android Studio无法查看源码
- HBase中应该如何合理设置客户端Write Buffer
- js声明函数(function)和变量(variable)不得不防的坑
- 表空间、段、区、块
- Python爬虫学习(二)用到的数据结构
- 算法_随机算法1_入门引例(根据随机数求圆周率pi)
- vue .sync 修饰符
- linux shell awk 流程控制语句(if,for,while,do)详细介绍
- java 有n个人围成一圈,从第1个人开始,1、2、3报数,报至3出局,余下的人继续从1、2、3报数,问:最后剩下的一人是原来的第几号?同时求出被淘汰编号的序列
- 1. Dubbo原理解析-Dubbo内核实现之SPI简单介绍
- ID生成方案
- oracle主键的自动生成
- iOS “深挖”单例模式
- CCF CSP 201412-1 门禁系统