集齐十二生肖卡问题-蒙特卡罗实现-已交作业记录

用蒙特卡罗的思路手撕12生肖问题

'''
Time:     2022/10/14 15:02
Author:   xin麒
File:     problem3.py
3.集齐十二生肖卡问题:某餐厅开展集齐十二生肖卡活动,
顾客每消费一次,随机发给一张生肖卡。如果顾客集齐十二生肖卡,
则可以免费消费一次。编写Python代码,应用蒙特卡罗方法(Monte
Carlo Method)
来估计平均消费多少次可以集齐一次十二生肖卡。
'''
import random
import numpy as np

def solution(number):
    N = int(number)
    print("《=============样本数初始值:", N, "====================")
    resultList = []
    list = [0 for i in range(12)]
    for i in range(N):
        list[random.randint(0, 11)] += 1
        flag = 0
        for i in list:
            if(i == 0):
                flag = 1
                break
        if(flag == 0):
            resultList.append(sum(list))
            list = [0 for i in range(12)]

    result = np.mean(resultList)
    print("样本为", N, "时 平均消费", result, "次可以集齐一次十二生肖卡")
    print("=============统计结束====================》")

if __name__ == '__main__':
    number = 1
    for i in range(2,9):
        number = 10**i
        solution(number) # 结果为37左右


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值