[問題] 請問是哪裡做錯了呢?

作者: TECO2oo (小麻雀)   2015-06-01 22:28:56
利用蒙地卡羅法求解圓周率。
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...
我猜是我程式碼數值錯誤,但是我改了改仍是不對,請問是哪裡做錯了?? 
謝謝!
 
作者: sqrt998001 (平方根999)   2015-06-01 23:15:00
random
作者: Frozenmouse (*冰之鼠*)   2015-06-01 23:24:00
random不是理所當然每次跑不一樣嗎XD
作者: TECO2oo (小麻雀)   2015-06-01 23:26:00
執行結果每次都不一樣,也就是它沒有真正的答案囉?
作者: Frozenmouse (*冰之鼠*)   2015-06-01 23:27:00
對的,除非你能知道那個「正確答案」是怎麼取亂數的要天時地利人和(?)才會算出來答案一樣
作者: TECO2oo (小麻雀)   2015-06-01 23:33:00
原來如此。哈哈,真的非常謝謝您。 我鬆了一口氣了(呼

Links booklink

Contact Us: admin [ a t ] ucptt.com