某人有 2 把伞,并在办公室和家之间往返.如果某天他在家中(办公室时)下雨而且家中(办公室)有伞他就带一把伞去上班(回家),不下雨时他从不带伞.如果每天与以往独立地早上(晚上)下雨的概率为0.7,试求他被雨淋湿的机会.
设
为
时刻持有的雨伞数量,则其状态量
。当下雨才用伞,每天下雨是独立事件,在此马尔可夫链中,用
表示状态量,当
大于0时,转移概率为
(下雨从手边带一把伞走),
(只是去了另一边,不带伞),因此转移矩阵为:
设平稳状态概率分别为
根据转移矩阵容易求得
淋雨的概率
则为
约等于 0.0913
模拟这个人上班回家往返 n 次,那么出行次数是 2n 每次下雨的概率就是 0.7。设最开始伞都在家里,则出门的时候向是否下雨的状态问询,记录下淋雨的次数。
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)
0.09133