目錄
- 1. 賽馬次數
- 2. 用繩子計時 15 分鐘
- 3. 九球稱重
- 4. 藥丸稱重
- 5. 得到 4 升的水
- 6. 扔雞蛋
- 7. 砝碼秤鹽
- 8. 拿到最後一本書(騰訊)
- 9. 裁繩子 2 刀形成三角形的機率
- 10. 抛硬币,先抛到正面獲勝
- 11. 1-100的燈最後關的燈的編号
- 12. n個人中至少有兩個人生日相同的機率
- 13. 怎樣估算上海市理發師的數量?
- 14. 一個孩子是女孩的情況下,另一個孩子也是女孩的機率
- 參考:
1. 賽馬次數
有 25 匹馬和 5 條賽道,賽馬過程無法進行計時,隻能知道相對快慢。問最少需要幾場賽馬可以知道前 3 名。
- 先把 25 匹馬分成 5 組,進行 5 場賽馬,得到每組的排名。
- 再将每組的第 1 名選出,進行 1 場賽馬,按照這場的排名将 5 組先後标為 A、B、C、D、E。
- 可以知道,A 組的第 1 名就是所有 25 匹馬的第 1 名。而第 2、3 名隻可能在 A 組的 2、3 名,B 組的第 1、2 名,和 C 組的第 1 名,總共 5 匹馬,讓這 5 匹馬再進行 1 場賽馬,前兩名就是第 2、3 名。
- 是以總共是5+1+1=7場賽馬。
A 組:1,2,3,4,5
B 組:1,2,3,4,5
C 組:1,2,3,4,5
D 組:1,2,3,4,5
E 組:1,2,3,4,5
2. 用繩子計時 15 分鐘
給定兩條繩子,每條繩子燒完正好一個小時,并且繩子是不均勻的。問要怎麼準确測量 15 分鐘。
- 點燃第一條繩子 R1 兩頭的同時,點燃第二條繩子 R2 的一頭;
- 當 R1 燒完,正好過去 30 分鐘,而 R2 還可以再燒 30 分鐘;
- 點燃 R2 的另一頭,15 分鐘後,R2 将全部燒完。
3. 九球稱重
有 9 個球,其中 8 個球品質相同,有 1 個球比較重。要求用 2 次天平,找出比較重的那個球。
- 将這些球均分成 3 個一組,共 3 組,選出 2 組稱重,
- 如果 1 組比較重,那麼重球在比較重的那 1 組;如果 1 組重量相等,那麼重球在另外 1 組。
- 對比較重的那 1 組的 3 個球再分成 3 組,重複上面的步驟。
4. 藥丸稱重
有 20 瓶藥丸,其中 19 瓶藥丸品質相同為 1 克,剩下一瓶藥丸品質為 1.1 克。瓶子中有無數個藥丸。要求用一次天平找出藥丸品質 1.1 克的藥瓶。
可以從藥丸的數量上來制造差異:從第 i 瓶藥丸中取出 i 個藥丸,然後一起稱重。可以知道,如果第 i 瓶藥丸重 1.1 克/粒,那麼稱重結果就會比正常情況下重 0.1 * i 克。
5. 得到 4 升的水
有兩個杯子,容量分别為 5 升和 3 升,水的供應不斷。問怎麼用這兩個杯子得到 4 升的水。
可以了解為用若幹個 5 和 3 做減法得到 4。
- 不能從 3 做減法得到 4,那麼隻能從 5 做減法得到 4,即最後一個運算應該為 5 - 1 = 4,此時問題轉換為得到 1 升的水;
- 1 升的水可以由 3 做減法得到,3 - 2 = 1,此時問題轉換為得到 2 升的水;
- 5 - 3 = 2。
是以:
- 将3升的裝滿倒入5升的;
- 再一次将3升的轉滿,倒入5升的,把5升裝滿;
- 3 升杯裡剩下的就是1升水;
- 倒掉5升的,把1升水倒入5升杯;
- 第三次加滿3升杯,倒入5升杯,得到4升水。
6. 扔雞蛋
一棟樓有 100 層,在第 N 層或者更高扔雞蛋會破,而第 N 層往下則不會。給 2 個雞蛋,求 N,要求最差的情況下扔雞蛋的次數最少。
- 可以将樓層劃分成多個區間,第一個雞蛋 E1 用來确定 N 屬于哪個區間,第二個雞蛋 E2 按順序周遊該區間找到 N。那麼問題就轉換為怎麼劃分區間滿足最壞情況下扔雞蛋次數最少。
- E1 需要從第一個區間開始周遊到最後一個區間。如果按等大小的方式劃分區間,即 E2 的周遊次數固定。那麼最壞的情況是 N 在最後一個區間,此時 E1 周遊的次數最多。為了使最壞情況下 E1 和 E2 總共周遊的次數比較少,那麼後面的區間大小要比前面的區間更小。
- 具體來說,E1 每多周遊一次,E2 要少周遊一次,才使得 N 無論在哪個區間,總共周遊的次數一樣。設第一個區間大小為 X,那麼第二個區間的大小為 X-1,以此類推。那麼 X + (X-1) + (X-2) + … + 1 = 100,得到 X (X + 1) / 2 = 100 ,即X = 14。
7. 砝碼秤鹽
140g 鹽,一天平,7g 、2g 砝碼各一個,如何隻利用這些東西 3 次把鹽分成 50g 和 90g ?
- 第一次: 7g、2g砝碼稱出 9g 鹽,結果鹽分成 9g 與 131g
- 第二次:将 9g 鹽與 7g、2g 都作為砝碼,結果将鹽分為 18g 與 113g (注意:這時鹽已經分為三份:9g、18g、113g,還有兩個砝碼)
-
第三次:将 18g 鹽與 7g 砝碼發在左托盤,将2g砝碼放在右托盤,然後在 113g 鹽中取鹽添置右托盤中,可擷取 23g 鹽。
這時鹽分為9g,18g,23g與90g。
即三次,可以得到90g與(9+18+23)50g。
8. 拿到最後一本書(騰訊)
100本書,兩個人輪流拿,每次拿1~5本,你先拿,有沒有啥政策可以保證你可以拿到最後一本?
- 要想拿到最後的書,則最後要剩下6本,則前面要拿94本書,這樣無論對方怎麼拿,我都能拿到最後的書
- 對方每次拿1-5 之前的N本書,是以我可以每次拿6-N本,保證我倆每次拿的書之和相加 = 6
- 94/6 取餘 = 4,是以要先拿
9. 裁繩子 2 刀形成三角形的機率
一段繩子,裁兩刀,變成3段,可以拼成一個三角形的機率有多大
設線段長度為a,任意分成三段長分别為x,y和 a-x-y ,顯然有 x>0,y>0,a-x-y>0,将這三個限制條件畫到(x,y)二維平面坐标系上,這三條直線圍成了一個直角三角形即為可行域(圖1),其面積為 。
而這三段長能構成三角形的條件是:任意兩邊之和大于第三邊,也就是下面三個不等式得同時成立:
我們把上面三個不等式也畫在平面直角坐标系中,可以看到可行域為圖 2 中綠色的小三角形,其面積為:
故此三段能構成三角形的機率為 1/4。
10. 抛硬币,先抛到正面獲勝
兩個人玩抛硬币的遊戲,誰先抛到正面就獲勝。那麼先抛的人獲勝機率為
第一次:正
第三次:反反正
第五次:反反反反正
…第N次:反反。。。。正
當公比不為1時,等比數列的求和公式為:
對于一個無窮遞降數列,數列的公比小于1,當上式得n趨向于正無窮大時,分子括号中的值趨近于1,取極限即得無窮遞減數列求和公式
是以:
11. 1-100的燈最後關的燈的編号
對一批編号為1-100,全部開關開着的燈進行以下操作:凡是1的倍數反方向撥一次開關;2的倍數 方向又撥一次開關;3的倍數反方向又撥一次開關……問:最後為關狀态的燈的編号是哪些
def setSwitch(temp, i):
if (temp[i] == 0):
temp[i] = 1
elif (temp[i] == 1):
temp[i] = 0
def light_list():
light = [0] * 100
for i in range(100):
for n in range(1, 101):
if ((i + 1) % n == 0):
setSwitch(light, i)
sum = 0
print("亮着的燈:")
for i in range(100):
if (light[i] == 1):
sum += 1
print(i, end=" ")
print("")
print("亮着的燈總共:", sum)
if __name__ == '__main__':
light_list()
輸出:
亮着的燈:
0 3 8 15 24 35 48 63 80 99
亮着的燈總共: 10
那麼關着的燈就容易得到了
12. n個人中至少有兩個人生日相同的機率
把問題轉換成 “計算完全沒有相同生日的機率A(n)”,再用 減去這個機率即可求出至少兩個人生日相同的機率 。
分析:
第1個人的生日是随意的,有365種可能,機率是365/365=1;
第2個人的生日不能與第1個人相同,隻有365-1=364種可能,機率是364/365;
第3個人的生日不能與前面2人相同,隻有365-2=363種可能,機率是363/365;……;
……
第n個人的生日不能與前面n-1人相同,隻有365-(n-1)=365-n+1種可能,機率是(365-n+1)/365.
完全沒有相同生日的機率:
是以至少兩人生日相同的機率: P(n)=1-A(n)
如果用n表示人數,p(n)表示n人中至少2人生日相同的機率,計算得到:
p(5)=0.03
p(10)=0.12
p(15)=0.25
p(20)=0.41
p(25)=0.57
p(30)=0.71
p(35)=0.81
p(40)=0.89
p(45)=0.94
p(50)=0.97
p(55)=0.99
可以看出,當人數超過55人時,至少2人生日相同的機率就會超過99%。是以,如果一個班的學生超過55人,幾乎可以肯定地說,一定有2人的生日相同。
13. 怎樣估算上海市理發師的數量?
參考:
【面試官手記】數量估算類面試題應該如何應對?
14. 一個孩子是女孩的情況下,另一個孩子也是女孩的機率
其實題目應該是,在至少一個為女孩的情況下,兩個都為女孩的機率是多少。這樣描述比較容易想清楚
答案: 1 / 3
夫妻有兩個小孩,則樣本空間為 女女,男女,女男,男男,則
參考:
- 面試常問智力題
- (牛客熱帖) 機率論面經彙總(持續更新)