随机信号变量的分析应用实例

对于随机信号变量将一个复杂的问题简单化,有如下例子:

有n个戴帽子的客户进入一家餐厅前,会把自己的帽子交给一位保管员,用餐结束后,保管员会随机从所有帽子中抽出一顶帽子还给客户,试问预期会有多少个客户能够拿到属于自己的帽子,如果按照一般的思路来考虑这个问题,那么用N来表示正确拿到属于自己的帽子的人数,预期能够拿到属于自己的帽子的人数为:

添加图片注释,不超过 140 字(可选)

这里问题主要是在于P(N=k),也就是正好会有k个人拿到自己的帽子的概率计算起来会非常的麻烦,而这里如果说使用随机信号变量来解决这个问题,那分析就会变得简单很多。

如果假设使用Ni表示第i个客人是否拿到属于自己的帽子,如果拿到属于自己的帽子,那么Ni=1,要不然Ni=0,于是就有N=N1+N2+...+Nn,所以有:

添加图片注释,不超过 140 字(可选)

由于从n顶帽子中随机选中对应客户的帽子,其概率是1/n,因此有E(Ni)=1/n,所以就有:

添加图片注释,不超过 140 字(可选)

也就是预期只有一个客户能够拿到属于他自己的帽子,使用python代码实现如下:

import  random
from random import shuffle

CUSTOMER_NUM = 10  #顾客的人数
CUSTOMER_HATS = random.sample(range(1, CUSTOMER_NUM * 10), CUSTOMER_NUM) #使用随机数表示客户帽子
customer_hats_map = {}
for i in range(CUSTOMER_NUM):
    customer_hats_map[i] = CUSTOMER_HATS[i]

simulations = 100000  #模拟运行的次数
correct_count = 0  #拿到自己帽子的人数

for i in range(simulations):
    shuffle(CUSTOMER_HATS)  #随机打乱帽子的排列次序
    for i in range(CUSTOMER_NUM):
        if customer_hats_map[i] == CUSTOMER_HATS[i]:  #从当前帽子中拿出第一顶还给客户
            correct_count += 1
        
print('The number of customer getting the right hat is : {0}'.format(int(correct_count / simulations)))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值