[問題] rand.nextInt 隨機問題

看板AndroidDev作者 (冰祕熊巴)時間12年前 (2013/07/28 10:47), 編輯推噓1(102)
留言3則, 1人參與, 最新討論串1/1
發揮耐心重複測試 APP,發現隨機的音效似乎不太隨機了.. 狀況為:先判斷是否一定要播音效,若否,則 1/3 機率播音效,而音效 6 選 1 隨機 發現若進入 if ,音效都只會取 1, 2, 4, 5, 沒有進入 if 才有機會出現 3 跟 6 難道連續兩次接續呼叫 rand.nextInt 會導致數字有關聯嗎?懇請指教了~~ 感恩 public int randNumber(int from, int to) { Random rand = new Random(); return rand.nextInt(to - from + 1) + from; } public boolean randPlaySound() { if(!一定要播音效) { if(randNumber(1, 3) != 2) // 取 1/3 機率播放 return false; } // 也就是 randNumber(1, 3) 取 2 立即再取 randNumber(1, 6) switch(randNumber(1, 6)) { case 1: mp_scare_bye.start(); // 偶而出現 (算是正常機率) break; case 2: mp_scare_holy.start(); // 非常頻繁出現 break; case 3: mp_scare_homerun.start(); // 從未出現 (除非沒進 if 才有機會出現) break; case 4: mp_scare_ohoh.start(); // 偶而出現 (算是正常機率) break; case 5: mp_scare_scream.start(); // 非常頻繁出現 break; case 6: mp_scare_sheep.start(); // 從未出現 (除非沒進 if 才有機會出現) break; } return true; } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.135.248.182

07/28 14:39, , 1F
請將這一段 Random rand = new Random();移到class scope
07/28 14:39, 1F

07/28 14:46, , 2F
並將不同範圍的random,分別成不同的變數~ ((小弟的拙見
07/28 14:46, 2F
您的意思是 class 中宣告 rand1to3 以及 rand1to6 取 1 ~ 3 數字時用 rand1to3.nextInt(3) + 1; 取 1 ~ 6 數字時用 rand1to6.nextInt(6) + 1; 這樣嗎? 不過後來我用比較土法煉鋼的解法,原文程式裡的 randNumber(1, 3) 改用另一種隨機數字取法 Math.random() * 3,目的只是為了不連續用同一種亂數取法 這樣跑起來是正常多了 @@ ※ 編輯: shawnba 來自: 220.135.248.182 (07/28 15:51)

07/28 15:59, , 3F
嗯嗯XDDDDD"
07/28 15:59, 3F
文章代碼(AID): #1Hz8Oohl (AndroidDev)