Re: [問題] 條件機率(終極版)

看板puzzle (益智遊戲 - 數獨,拼圖,推理,西洋棋)作者 (qqaa)時間16年前 (2009/11/24 00:18), 編輯推噓12(1209)
留言21則, 3人參與, 最新討論串12/23 (看更多)
1 #include<iostream> 2 #include<cstdio> 3 #include<cstdlib> 4 #include<ctime> 5 6 using namespace std; 7 8 int o[2] = {0} ; 9 10 int Rand() 11 { 12 int x = rand() % 2; 13 o[x] ++ ; 14 return x ; 15 } 16 17 int main() 18 { 19 srand( time(NULL) ) ; 20 21 int n , B ; 22 23 cout << "How many times you want to play?" << endl ; 24 cin >> n ; //模擬 n 次 25 cout << "How many balls ?" << endl ; 26 cin >> B ; //袋子裡有B顆球 27 28 int b = 0 , w = 0 ; 29 for( int i = 0 ; i < n ; ) 30 { 31 int color[10] ; 32 33 for( int k = 0 ; k < B ; k ++ ) 34 color[k] = Rand() ; //決定球的顏色 35 int c = 0 ; 36 37 for( int k = 0 ; k < B ; k ++ ) 38 if( color[k] ) 39 c ++ ; //計算袋子裡有幾顆白球 40 41 if( c >= B - 1 ) //如果袋子裡至少有B-1顆球 42 { 43 if( c == B ) //如果剩下的那一顆也是白色 44 w ++ ; 45 else //不然就是黑色 46 b ++ ; 47 i ++ ; 48 } 49 } 50 51 cout << "0: " << o[0] << "\t" << 100.*o[0]/(o[0]+o[1]) << "%" << endl ; 52 cout << "1: " << o[1] << "\t" << 100.*o[1]/(o[0]+o[1]) << "%" << endl ; 53 puts( "------------------------------------" ) ; 54 cout << "Result:" << endl ; 55 cout << "W: " << w << "\t" << 100.*w/(w+b) << "%" << endl ; 56 cout << "B: " << b << "\t" << 100.*b/(w+b) << "%" << endl ; 57 58 return 0; 59 } 執行結果:(已翻譯和補充說明) 模擬幾次? 1000000 袋子裡有幾顆球? 2 ------------------------------------ 模擬結果: 在這次的模擬中,亂數選到0的機率是: 1333605次 50.0043% 在這次的模擬中,亂數選到1的機率是: 1333375次 49.9957% ------------------------------------ 你拿到白球333375次 機率 33.3375% 你拿到黑球666625次 機率 66.6625% 模擬幾次? 1000000 袋子裡有幾顆球? 4 ------------------------------------ 模擬結果: 在這次的模擬中,亂數選到0的機率是: 6394380次 49.9949% 在這次的模擬中,亂數選到1的機率是: 6395688次 50.0051% ------------------------------------ 你拿到白球199272次 機率 19.9272% 你拿到黑球800728次 機率 80.0728% 解釋一下: 這裡的概念是,如果袋子裡恰好有B-1個白球,那你就是會選到黑球 如果袋子裡全部是白球,那你選到白球(廢話) 袋子裡白球少於B-1個的情況不在樣本空間中。 在模擬時,亂數選到1代表白球,選到0代表黑球。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.228.164.156

11/24 00:19, , 1F
可以把結論用中文再翻譯一次嗎?>"<
11/24 00:19, 1F

11/24 00:20, , 2F
結論?
11/24 00:20, 2F

11/24 00:20, , 3F
我是說那個結果
11/24 00:20, 3F
※ 編輯: stimim 來自: 61.228.164.156 (11/24 00:27)

11/24 00:29, , 4F
哦哦哦 我看懂了~:-)
11/24 00:29, 4F

11/24 00:31, , 5F
不過我以為是 1/2 呢~結果不是.....
11/24 00:31, 5F

11/24 00:33, , 6F
可是我覺得這種解釋方式有點怪怪的
11/24 00:33, 6F

11/24 00:34, , 7F
我覺得1/2比較合理XD
11/24 00:34, 7F

11/24 00:34, , 8F
那就把意義也附註 0(白球) 1(黑球)之類...
11/24 00:34, 8F

11/24 00:35, , 9F
因為四顆球時 一黑三白 及 三黑一白時 機率最高
11/24 00:35, 9F

11/24 00:36, , 10F
所以吐出三白時 剩下的一顆是黑球 應該是合理的...
11/24 00:36, 10F

11/24 00:37, , 11F
^的機率較高
11/24 00:37, 11F
1/2的想法: 不管袋子裡是什麼狀況,反正我些選一顆, 再把剩下的到出來,如果都是白色的,那才是我的樣本空間, 再去檢查手裡的球是什麼顏色。 2/3的想法: 樣本空間就是袋子裡最多只有一顆黑球的情況, 如果袋子裡有黑球,那我就會選到黑球。否則才是白球。 就我個人認為1/2的想法比較符合題意。 ※ 編輯: stimim 來自: 61.228.164.156 (11/24 00:44)

11/24 00:45, , 12F
那所以是寫程式的方式要做改變嗎?
11/24 00:45, 12F

11/24 00:45, , 13F
不同的想法可以寫出不同的程式,A大的程式是針對1/2寫出來
11/24 00:45, 13F

11/24 00:47, , 14F
的,我的程式是針對2/3,總是可以寫出符合條件的程式
11/24 00:47, 14F

11/24 01:02, , 15F
可是你的答案不是2/3啊?
11/24 01:02, 15F

11/24 01:03, , 16F
只有第一個是而已.....第二個 4顆球那個就不是了....
11/24 01:03, 16F

11/24 01:32, , 17F
看罷你的程式,你做的只是說 n 顆球,究竟是
11/24 01:32, 17F

11/24 01:33, , 18F
n-1 白球 + 1 黑球,還是 n 白球的機會比較大
11/24 01:33, 18F

11/24 01:33, , 19F
那當然是前者比較大。但原問題是你抽到一個球之後所有
11/24 01:33, 19F

11/24 01:34, , 20F
剩下的都是白球,情況不一樣耶
11/24 01:34, 20F
情況不一樣是當然的,因為這個程式是用另一種角度去解釋題目, 但是如我所補充的,2/3的想法在某種程度上曲解了題意, 在我看來這種解讀方式是有問題的。

11/24 05:46, , 21F
哦...我懂原PO 2/3 的意思了.....我弄錯了^^"
11/24 05:46, 21F
※ 編輯: stimim 來自: 140.112.7.59 (11/24 10:59)
文章代碼(AID): #1B2hNMz_ (puzzle)
文章代碼(AID): #1B2hNMz_ (puzzle)