前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >关于马尔可夫链的一道题目

关于马尔可夫链的一道题目

作者头像
用户3577892
发布2021-04-21 10:31:21
2.4K0
发布2021-04-21 10:31:21
举报
文章被收录于专栏:数据科学CLUB
  • 问题
  • 解答
  • python模拟

问题

某人有 2 把伞,并在办公室和家之间往返.如果某天他在家中(办公室时)下雨而且家中(办公室)有伞他就带一把伞去上班(回家),不下雨时他从不带伞.如果每天与以往独立地早上(晚上)下雨的概率为0.7,试求他被雨淋湿的机会.

解答

X_n

n

时刻持有的雨伞数量,则其状态量

S_n = \{0, 1, 2\}

。当下雨才用伞,每天下雨是独立事件,在此马尔可夫链中,用

i

表示状态量,当

i

大于0时,转移概率为

p_{i,3-i} = 0.7

(下雨从手边带一把伞走),

p_{i, 2-i}=0.3

(只是去了另一边,不带伞),因此转移矩阵为:

\begin{bmatrix} 0 & 0 & 1 \\ 0 & 0.3 & 0.7 \\ 0.3 & 0.7 & 0 \\ \end{bmatrix}

设平稳状态概率分别为

\pi_0, \pi_1, \pi_2

根据转移矩阵容易求得

\begin{aligned} \pi_0=\frac{3 }{ 23} \\ \pi_1=\frac{10 }{ 23} \\ \pi_2=\frac{10 }{ 23} \end{aligned}

淋雨的概率

p

则为

p=\pi_0 * 0.7 =\frac{21 }{ 230}

约等于 0.0913

python模拟

模拟这个人上班回家往返 n 次,那么出行次数是 2n 每次下雨的概率就是 0.7。设最开始伞都在家里,则出门的时候向是否下雨的状态问询,记录下淋雨的次数。

代码语言:javascript
复制
import random


# 试验往返次数
n = 1000000
# 设置随机抽样下雨 p=0.7 的环境样本
rain = [1, 1, 1, 1, 1, 1, 1, 0, 0, 0] 
# 被淋雨的次数
get_wet = 0
# A点伞的数量
a_um = 2
# B点伞的数量
b_um =0
# 出门/回家
status = ['go', 'back']

for i in range(n):
    for s in status:
        if s == 'go':
            if random.choice(rain) == 1:
                if a_um > 0:
                    a_um -= 1
                    b_um += 1
                    get_wet += 0
                else:
                    get_wet += 1
            else:
                get_wet += 0
        else:
            if random.choice(rain) == 1:
                if b_um > 0:
                    b_um -= 1
                    a_um += 1
                    get_wet += 0
                else:
                    get_wet += 1
            else:
                get_wet += 0
print(get_wet/2/n)
代码语言:javascript
复制
0.09133
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-03-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据科学CLUB 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 问题
  • 解答
  • python模拟
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档