Re: [問題] 機率問題

看板Programming作者 (No Comment)時間11年前 (2013/06/01 01:22), 編輯推噓3(303)
留言6則, 2人參與, 最新討論串2/5 (看更多)
※ 引述《hirabbitt (兔子)》之銘言: : 有未知數量的紅球與綠球 : 希望給出紅球的機率是綠球的三倍 : 不知道應該怎麼做比較好 : 有想過先把紅綠球分開 : 然後再75%取紅的25%取綠的 : 但是因為數量有可能非常龐大 : 使用這種方式雖然精確度100%但是難以保證時間 : 另外也想過先用75%25%決定要紅球還綠球 : 目標確定後就一直取取到想要的顏色出現為止 : 但也可能紅綠球比例相差過大(例如1顆綠球配99999顆紅球) : 或根本沒有某色球而造成無窮迴圈 : 考慮到根本沒有某色球的情況 : 精確度其實沒有要求到100% : 目前我的想法是每次都決定要紅球還綠球(一樣用75%25%) : 然後再去取球 : 取出錯的顏色時就用75%25%重新決定要紅球還綠球 : 不知道有沒有其他更好的方式? : 感謝 int n = totalNum; int redTotal = ((totalNum*3)/4); // total number of red ball // 3/4 of total ball in your case while (n>0) { r = rand()*n; if (r<redTotal){ isRedBall(); redTotal --; }else{ isGreenBall(); } n--; } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 1.34.253.77

06/03 09:36, , 1F
redTotal不一定是((totalNum*3)/4)耶
06/03 09:36, 1F

06/03 17:03, , 2F
要1:3不是? 也可以改成其他需要的值
06/03 17:03, 2F

06/04 11:28, , 3F
預期產出要1:3 但是原集合非1:3
06/04 11:28, 3F

06/04 11:31, , 4F
喔喔大概懂你的意思了 isRedBall是去取
06/04 11:31, 4F

06/04 11:32, , 5F
紅球對吧 但現在卡在紅球可能很少或根本
06/04 11:32, 5F

06/04 11:32, , 6F
沒有紅球 那isRedBall就會跑很久或卡住
06/04 11:32, 6F
文章代碼(AID): #1HgDnBPE (Programming)
討論串 (同標題文章)
文章代碼(AID): #1HgDnBPE (Programming)