我用java写了一个算圆周率的程序 但效果不理想,谁能帮我检查一下?
利用几何概型原理编写在1x1正方形中随机取点平方和小于1(相当于1/4圆区域)就记数最后将计数点除以总次数再乘4就是圆周率的近似值但是写出的程序即使次数达到百万次以上,要...
利用几何概型原理编写
在1x1正方形中随机取点
平方和小于1(相当于1/4圆区域)就记数
最后将计数点除以总次数再乘4就是圆周率的近似值
但是写出的程序即使次数达到百万次以上,要么就输出0 要么就是接近3.99,与3.14相差很大
源码如下:
==========
import java.util. * ;
public class Main {
public static void main(String[] args) {
while (true) {
System.out.print("请输入计算次数:");
Scanner Accuracy = new Scanner(System. in );
Double i = Accuracy.nextDouble();
Double n = 1D;
Double t = 0D;
Double x,
y;
x = Math.random();
y = Math.random();
while (n <= i) {
if (x * x + y * y <= 1) {
t++;
n++;
} else {
n++;
}
}
Double Pi = (t / n) * 4;
System.out.println("圆周率\"π\"的值为" + Pi);
}
}
}
========== 展开
在1x1正方形中随机取点
平方和小于1(相当于1/4圆区域)就记数
最后将计数点除以总次数再乘4就是圆周率的近似值
但是写出的程序即使次数达到百万次以上,要么就输出0 要么就是接近3.99,与3.14相差很大
源码如下:
==========
import java.util. * ;
public class Main {
public static void main(String[] args) {
while (true) {
System.out.print("请输入计算次数:");
Scanner Accuracy = new Scanner(System. in );
Double i = Accuracy.nextDouble();
Double n = 1D;
Double t = 0D;
Double x,
y;
x = Math.random();
y = Math.random();
while (n <= i) {
if (x * x + y * y <= 1) {
t++;
n++;
} else {
n++;
}
}
Double Pi = (t / n) * 4;
System.out.println("圆周率\"π\"的值为" + Pi);
}
}
}
========== 展开
4个回答
展开全部
//你程序没错,只是看不懂你的公式,下面是复制的两种方法,希望对你有所帮助:
public class Day13_B {
public static void main(String[] args) {
cut(12);//12次
System.out.println();
example();
System.out.println();
}
// 方法1:割圆法: π≈3*2^n*y_n n代表割圆次数,y_n代表圆中内嵌正6*n边形的边长
private static void cut(int n) {
double y = 1.0;
for (int i = 0; i <= n; i++) {
double π = 3 * Math.pow(2, i) * y;
System.out.println("第" + i + "次切割,为正" + (6 + 6 * i) + "边形,圆周率π≈" + π);
y = Math.sqrt(2 - Math.sqrt(4 - y * y));
}
}
// 方法2:无穷极算法:π = 2 + 2/3 + 2/3*2/5 + 2/3*2/5*3/7 + ...
private static void example() {
double x = 2, z = 2, a = 1, b = 3;
while (z > 1e-15) {
z = z * a / b;
x += z;
a++;
b += 2;
}
System.out.println("无穷极算法:" + x);
}
}
算法之美的翻译文章:这适合数学爱好者可以看看不错的...
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不发代码怎么给你检查啊😄
追问
有啊
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
emmm代码呢?
追问
有啊
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询