條件機率(終極版) - 拼圖

Table of Contents

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代表黑球。


--

All Comments

Irma avatarIrma2009-11-27
可以把結論用中文再翻譯一次嗎?>"<
Olive avatarOlive2009-11-29
結論?
Rosalind avatarRosalind2009-11-29
我是說那個結果
Madame avatarMadame2009-12-04
哦哦哦 我看懂了~:-)
Tristan Cohan avatarTristan Cohan2009-12-07
不過我以為是 1/2 呢~結果不是.....
Joe avatarJoe2009-12-08
可是我覺得這種解釋方式有點怪怪的
Harry avatarHarry2009-12-09
我覺得1/2比較合理XD
Audriana avatarAudriana2009-12-13
那就把意義也附註 0(白球) 1(黑球)之類...
Skylar DavisLinda avatarSkylar DavisLinda2009-12-16
因為四顆球時 一黑三白 及 三黑一白時 機率最高
Donna avatarDonna2009-12-19
所以吐出三白時 剩下的一顆是黑球 應該是合理的...
Gary avatarGary2009-12-23
^的機率較高
Daniel avatarDaniel2009-12-28
那所以是寫程式的方式要做改變嗎?
Lauren avatarLauren2009-12-29
不同的想法可以寫出不同的程式,A大的程式是針對1/2寫出來
Agatha avatarAgatha2009-12-30
的,我的程式是針對2/3,總是可以寫出符合條件的程式
Agatha avatarAgatha2010-01-02
可是你的答案不是2/3啊?
Ula avatarUla2010-01-04
只有第一個是而已.....第二個 4顆球那個就不是了....
Regina avatarRegina2010-01-06
看罷你的程式,你做的只是說 n 顆球,究竟是
Charlie avatarCharlie2010-01-07
n-1 白球 + 1 黑球,還是 n 白球的機會比較大
那當然是前者比較大。但原問題是你抽到一個球之後所有
Lauren avatarLauren2010-01-09
剩下的都是白球,情況不一樣耶
Skylar DavisLinda avatarSkylar DavisLinda2010-01-12
哦...我懂原PO 2/3 的意思了.....我弄錯了^^"