天天看點

阿裡巴巴2017測試題--抽獎

題目描述

有1到7編号的7個球,連續抽取3個球,其中有2個球連續,則中獎,求中獎的機率。
           

思路

首先從7個球中抽取3個球有 A37 =35種可能。然後把1、2兩個球看成一個整體,則中獎可能有5種。再把2、3兩個球看成一個整體,則總共有4種。

然後把3、4看成一個整體,則有可能另一個号碼小于3-1,大于4,則總共有4種。

4、5看成整體,則另一個号碼小于3,大于5,有4種。

5、6看成整體,另一個号碼小于4,大于6,4種。

6、7看成整體,另一個号碼小于5,有4種

中獎的組合總數=5+4+4+4+4

中獎的機率為 5/7

最後做個驗證:

#include<set>
#include <stdlib.h> 
using namespace std;
#include<time.h>
#define TIME 100000
int main()
{
    set<int> s;
    int zhongjiang=;
    srand((int)time());
    for (int i = ; i < TIME; i++)
    {
        while (s.size() < )
        {   
            int c = rand() %  + ;
            s.insert(c);
        }
        for (int j : s)
        {
            if (s.count(j + ) || s.count(j - ))
            {
                zhongjiang++;
                break;
            }
        }
        s.clear();
    }
    cout << zhongjiang << endl;
    return ;
}
           

TIME=100000次時,約有71424次中獎,0.71424的機率約等于5/7

繼續閱讀