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

看板java作者 (泰可)時間9年前 (2015/06/01 22:28), 編輯推噓0(006)
留言6則, 3人參與, 最新討論串1/1
利用蒙地卡羅法求解圓周率。 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://www.ptt.cc/bbs/java/M.1433168939.A.ABF.html

06/01 23:15, , 1F
random
06/01 23:15, 1F

06/01 23:24, , 2F
random不是理所當然每次跑不一樣嗎XD
06/01 23:24, 2F

06/01 23:26, , 3F
執行結果每次都不一樣,也就是它沒有真正的答案囉?
06/01 23:26, 3F

06/01 23:27, , 4F
對的,除非你能知道那個「正確答案」是怎麼取亂數的
06/01 23:27, 4F

06/01 23:28, , 5F
要天時地利人和(?)才會算出來答案一樣
06/01 23:28, 5F

06/01 23:33, , 6F
原來如此。哈哈,真的非常謝謝您。 我鬆了一口氣了(呼
06/01 23:33, 6F
文章代碼(AID): #1LR6mhg_ (java)