使用python计算酒鬼被抓的概率问题

4 篇文章 0 订阅
1 篇文章 0 订阅

概率问题是最方便使用计算机计算的问题。因为计算机可以模拟大量的重复计算工作,难以理解的概率问题,通过计算机代码一算就很容易算出正确结果出来。

今天就为大家讲解下如何通过python来计算一道很有名的酒鬼概率问题。

问题:

已知某酒鬼有90%的日子都会出去喝酒,
喝酒只去固定三家酒吧。
今天警察找了其中两家酒吧都没有找到酒鬼。

问:

酒鬼在第三家酒吧的几率?

我是通过如下方式计算这个概率问题的。注释也写了,不清楚的同学请在评论区留言。

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2020/3/23 14:46
# @Author  : Lihua
# @Version : 1.0
# @Contact : heei3k@hotmail.com
# @File    : drunkard.py
# @Software: PyCharm

# 酒鬼的概率问题,已知一个酒鬼一天会去酒吧的概率是90%,而他会去三个酒吧。警察去酒吧抓人,去了两个酒吧都没抓到他,那么请问,警察去第三个酒吧抓到他的概率有多大。

# 这个问题可以用概率这么算,随机给一个10以内的数,如果这个数为10,则为不在酒吧,如果为1到9,则在酒吧。然后将这9个数分成三个段,叫A段,B段,C段
# 然后随机取三个段,然后分别判断这个数是否在这个段以内,取10000次,第一次在则不计算,第二次在则不计算,第三次不管在不在都要计算。
# 最后计算的结果就是0.75

import random

list=[[1,2,3],[4,5,6],[7,8,9]]




def drunkard():
    n = 100000
    m1 = 0  # 在第三家和家里总数
    m2 = 0  # 在第三家酒吧的总数
    for i in range(n):
        # 随机取一个数,这个数决定了这个人是否在酒吧,如果为10则不在酒吧
        a=random.randint(1,10)
        print(a)
        # 将list打乱,打乱后的顺序就是警察访问酒吧的顺序,警察会依次访问list[0]和list[1]的酒吧
        random.shuffle(list)
        print(list)
        # 遍历两个list
        for x in range(2):
            in_bar=False
            for y in list[x]:
                if y==a:
                    # 如果在酒吧,则判定在前两个酒吧为true,将不计算此次数据
                    in_bar=True
                    break
            if in_bar:
                break
        # 只有前两个酒吧都没人,才将总计算数据+1
        if not in_bar:
            m1 += 1
            print("m1",m1)
        # 当在第三个酒吧的时候,在酒吧的数据加1
        for z in list[2]:
            if a==z:
                m2 += 1
                print("在第三个酒吧")
    # 最后相除,计算出最终结果
    print("m1",m1,"m2",m2,"结果是",m2/m1)


if __name__ == '__main__':
    drunkard()
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值