天气预报说,在今后的三天中,每一天下雨的概率均为40%,请问这三天中恰有两天下雨的概率是多少?
用Python来模拟这种40%的概率和三天中两天下雨的情况。可以用代码随机产生0~9之间的整数随机数,用1、2、3、4表示下雨,用5、6、7、8、9、0表示不下雨。由于以三天为一组,所以我们每次生成一个三位的数字串。会用到np.random.default_rng()
由于百位以内不够三位,用zfill在前面补0,就实现了一次生成三天的情况。
然后计算这些数字字符中1~4(意为下雨)的数量,筛选值为2的数据。
import pandas as pd
import numpy as np
rng=np.random.default_rng() #定义随机对象
days=100000 #随机天数
arr=rng.integers(0,1000,days) #生成随机数字
(
pd.DataFrame()
.assign(x=arr) #把随机数字增加到列
.astype(str) #转为字符
.assign(x=lambda d:d.x.str.zfill(3)) #在不足三位的数字前补0
.assign(a=lambda d:d.x.str.count(r'1|2|3|4')) #统计数字串1~4(下雨)的数量
.query('a==2') #筛选出两天下雨的数据
)
最后与总数据(天数)相比得到结果:
len(_)/days
'''
0.2875
'''