java 板


LINE

小弟我對於樂透機率小有疑問 於是寫了個簡單的程式來跑一下 但不管怎麼跑總是搭不起來 我的問題如下 樂透49個號碼,我只簽2個號碼 要求出 2中0 2中1 2中2 三種狀況的機率 自己直接用公式算完的機率分別是 2中0 = 0.767857143 2中1 = 0.219387755 2中2 = 0.012755102 但是我自己寫了程式下去跑 機率總和永遠大於1 雖然誤差一定會有 但是這怎麼看都不太像是誤差QQ 想請各位前輩幫忙看看是否程式寫錯或是邏輯觀念錯誤 ------------------------------------------ int count = 10000000; //跑一千萬次 int winOne = 0; int winAll = 0; int noWin = 0; ArrayList<Integer> numList; ArrayList<Integer> myNumList; for (int i = 0; i < count; i++) { numList = new ArrayList<>(); myNumList = new ArrayList<>(); //產生一組樂透號碼,6個數字 for (int n = 0; numList.size() < 6; n++) { int num = (int) (Math.random() * 49 + 1); if (!numList.contains(num)) { numList.add(num); } } //產生一組我的號碼,2個數字 for (int n = 0; myNumList.size() < 2; n++) { int num = (int) (Math.random() * 49 + 1); if (!myNumList.contains(num)) { myNumList.add(num); } } //檢查中獎 if (numList.contains(myNumList.get(0)) || numList.contains(myNumList.get(1))) { winOne += 1; } else { noWin += 1; } if (numList.contains(myNumList.get(0)) && numList.contains(myNumList.get(1))) { winAll += 1; } } System.out.println("二中零機率 = " + (double) noWin / count ); System.out.println("二中一機率 = " + (double) winOne / count ); System.out.println("二中二機率 = " + (double) winAll / count ); System.out.println("加總 = " + (double) (noWin+winOne+winAll ) / count ); ------------------------ 本來想說自己看懂就好 所以程式寫得滿簡陋的請各位多多包涵 --



※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 223.141.198.211
※ 文章網址: https://webptt.com/m.aspx?n=bbs/java/M.1525678235.A.9AA.html
1F:推 marx93521: winOne跟winAll是不是重複計算到了? 05/07 15:39
2F:→ jej: 看到double就要小心IEEE的限定 05/07 19:50
3F:推 wemee: IEEE 754 我中招很多次 05/08 12:29
4F:→ FromTo: 二中一的判斷式有誤,會包含二中二。包含A(B)&&不包含B(A) 05/08 14:35
5F:推 nicknick0630: 你檢查中獎的第一行不對 (A||B) A是true就不會管B 05/08 18:44
6F:→ nicknick0630: 是怎樣了 05/08 18:44
7F:→ taco2548: 但我2中2是另外寫if,並不是寫else if,,這樣也不行嗎? 05/08 21:01
8F:推 nicknick0630: 如果你get(0)和get(1)都是true 05/09 01:36
9F:→ nicknick0630: 他就會直接執行winOne++ 05/09 01:36
10F:→ nicknick0630: 然後到下面又winAll++一次 05/09 01:36
11F:→ nicknick0630: 所以你第一個if判斷的地方出錯了 05/09 01:36
感謝,問題已解,還是乖乖寫else if寫好寫滿QQ ※ 編輯: taco2548 (223.141.198.211), 05/09/2018 08:01:08
12F:→ ssccg: 就是因為另外寫if才會錯啊 05/09 13:09
13F:→ ssccg: A and B就已經包含在A or B裡面了 05/09 13:09
14F:→ ssccg: 只寫if 不用else的話,每個條件都必須不會互相包含 05/09 13:11
15F:→ ssccg: 寫if else if 要由不包含其他條件的依序放寬 05/09 13:12
16F:→ ssccg: 邏輯觀念的問題比較大 05/09 13:13
17F:推 gmoz: 你需要先知道一下if()裡面是怎麼運作的 05/09 16:30







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:iOS站內搜尋

TOP