用程序解決兒子的問題(二):你要幾個(gè)寶石?

之前寫了:用程序解決兒子的問題:她們分別買了什么?,這是第二篇

問題

一個(gè)國王要獎給大臣寶石,他對大臣說:袋子里有紅寶石和綠寶石,紅寶石有5個(gè),綠寶石6個(gè),你可以取任意數(shù)量的寶石,如果紅寶石的數(shù)量和綠寶石的數(shù)量相同,這些寶石就歸你,如果不相同,你就得不到寶石,你要取幾個(gè)寶石呢?

分析

如果紅寶石和綠寶石數(shù)量相同,那必須取偶數(shù)個(gè),也就是2、4、6、8、10,很容易分析,取2個(gè)和10個(gè)贏的的概率是6/11,那取4個(gè)、6個(gè)、8個(gè)贏的概率是多少呢?用概率分析就有點(diǎn)難了,不如直接寫程序計(jì)算。

程序

import random
from functools import reduce


def solve(count, num):
    win = 0
    for i in range(count):
        box = [1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0]
        picked = []
        for j in range(num):
            r = random.randint(0, len(box) - 1)
            ball = box[r]
            box.remove(ball)
            picked.append(ball)
        summary = reduce(lambda x, y: x+y, picked)
        if summary == num // 2:
            win += 1
    return win


def main():
    nums = [2, 4, 6, 8, 10]
    total = 1100000
    for num in nums:
        win = solve(total, num)
        print('試驗(yàn){}次取{}個(gè)寶石,贏了{(lán)}次,贏的概率*寶石數(shù)量: {}'.format(total, num, win, win/total * num))


if __name__ == '__main__':
    main()

某次輸出結(jié)果

試驗(yàn)1100000次取2個(gè)寶石,贏了599902次,贏的概率*寶石數(shù)量: 1.0907309090909092
試驗(yàn)1100000次取4個(gè)寶石,贏了500568次,贏的概率*寶石數(shù)量: 1.8202472727272727
試驗(yàn)1100000次取6個(gè)寶石,贏了475705次,贏的概率*寶石數(shù)量: 2.5947545454545455
試驗(yàn)1100000次取8個(gè)寶石,贏了499749次,贏的概率*寶石數(shù)量: 3.634538181818182
試驗(yàn)1100000次取10個(gè)寶石,贏了599903次,贏的概率*寶石數(shù)量: 5.453663636363636

因?yàn)榻Y(jié)果又一定的隨機(jī)性,我們推斷取2個(gè)和10個(gè)贏的概率,取4個(gè)和取8個(gè)贏的概率是一樣的。結(jié)合概率和數(shù)量,取10個(gè)寶石最有利。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容