对于随机信号变量将一个复杂的问题简单化,有如下例子:
有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)))