一个家庭两个孩子,已知一个是女孩,另一个是女孩的概率是?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 }