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/cn.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灯, 水草

请输入看板名称,例如:Soft_Job站内搜寻

TOP