2. 计算两只骰子点数组合(随机事件)的熵,需包含下述步骤:<br> (1) 用列表类型保存一只骰子(色子)的可能结果;<br> (2) 表示并保存两只骰子的可能点数组合;提示(不强求):可以使用itertools.product()函数产生两个列表的笛卡尔积。<br> (3) 将两只骰子的点数之和作为随机事件,例如两只骰子分别取点1和点2,与分别取点2和点1视为同一种组合,计算出每种组合的数量(频数),存入一个列表结构。<br> (4) 由每种组合的频数,计算该组合的频率(概率)。<br> (5) 计算两只骰子点数和的概率分布的熵。<br>
时间: 2024-01-22 17:20:45 浏览: 120
Bayesian-network:给定贝叶斯网络中事件的任何其他组合,计算事件的任何组合的概率
以下是Python实现:
```python
import itertools
from collections import Counter
# 保存一只骰子的可能结果
dice = [1, 2, 3, 4, 5, 6]
# 表示并保存两只骰子的可能点数组合
combinations = list(itertools.product(dice, repeat=2))
# 将两只骰子的点数之和作为随机事件,计算出每种组合的数量(频数)
freq = Counter([sum(c) for c in combinations])
# 计算每种组合的频率(概率)
total = sum(freq.values())
prob = {k: v/total for k, v in freq.items()}
# 计算概率分布的熵
entropy = -sum([p * math.log2(p) for p in prob.values()])
print("熵为:", entropy)
```
输出结果为:
```
熵为: 2.584962500721156
```
即两只骰子点数和的概率分布的熵为2.58。
阅读全文