作者TECO2oo (泰可)
看板java
标题[问题] 请问是哪里做错了呢?
时间Mon Jun 1 22:28:56 2015
利用蒙地卡罗法求解圆周率。
import java.util.Random;
import java.util.Scanner;
public class Java_09
{
public static void main (String args[]) {
System.out.println("请输入一长整数,使用蒙地卡罗法求解圆周率... ");
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
Random r = new Random();
long sum=0;
for(long i=1; i<=n; i++) {
double x = r.nextDouble();
double y = r.nextDouble();
if(x*x+y*y<=1)
{
sum++;
}
}
System.out.println((double) 4*sum/(n));
}
}
假设输入数值为 1234567
执行结果为 3.1405828926.... 正确答案是 3.1416002533...
我猜是我程式码数值错误,但是我改了改仍是不对,请问是哪里做错了??
谢谢!
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 36.237.47.126
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/java/M.1433168939.A.ABF.html
1F:→ sqrt998001: random 06/01 23:15
2F:→ Frozenmouse: random不是理所当然每次跑不一样吗XD 06/01 23:24
3F:→ TECO2oo: 执行结果每次都不一样,也就是它没有真正的答案罗? 06/01 23:26
4F:→ Frozenmouse: 对的,除非你能知道那个「正确答案」是怎麽取乱数的 06/01 23:27
5F:→ Frozenmouse: 要天时地利人和(?)才会算出来答案一样 06/01 23:28
6F:→ TECO2oo: 原来如此。哈哈,真的非常谢谢您。 我松了一口气了(呼 06/01 23:33