一个家庭两个孩子,已知一个是女孩,另一个是女孩的概率是?C++

 1 #include <ctime>
 2 #include <iostream>
 3 #include <algorithm>
 4 
 5 using namespace std;
 6 
 7 class family{
 8 public:
 9     family(int cnt = 10000) :cnt(cnt), g1(0), g2(0){} 
10     void test(){
11         srand((unsigned)time(nullptr));
12         for(int i = 0; i < cnt; ++i){
13             auto x = rand() % 2;
14             auto y = rand() % 2;
15             if(x == girl && y == girl) // 两个都是女孩
16                 g2++;
17             if(x == girl || y == girl) // 两个孩子至少有一个是女儿
18                 g1++;
19         }
20         cout << g2 * 1.0 / g1 << endl;    
21     }
22 
23 private:
24    // 概率论公式: 设g1表示第一个孩子是女孩,g2表示第二个孩子是女孩,则有P(g2|g1) = P(g1g2) / P(g1)
25     constexpr static int girl = 0;
26     constexpr static int boy = 1;
27     int cnt;//实验次数
28     int g1, g2;
29 };
30 
31 
32 int main()
33 {
34     family a;
35     a.test();
36 
37     return 0;
38 }

 

posted @ 2019-07-13 09:18  鸿钧三清  Views(743)  Comments(0Edit  收藏  举报