优客文库提供全面的范文格式和文档模板,包括申请书、合同、借据、证明、求职信等,助力您快速撰写专业文档。

Python解决问题,在未触发大保底机制时,每抽一发有p/2的概率抽到当期5星,有p/2的概率抽到常驻5星,其余的1一p概率不出5星。当抽到常驻5星后,触发了大保底机制,以后每抽一发有p的概率抽到当期

来自 重庆市重庆市 的网友 时间: 热度:°C 加入收藏 我要投稿 点赞()
根据给定的条件,我们可以列出如下的概率转移矩阵:

```
P = [[1/2, 1/2, 0], # 从未触发大保底机制抽到当期5星的概率
[1/2, 0, 1/2], # 从未触发大保底机制抽到常驻5星的概率
[p, 0, 1-p]] # 从触发大保底机制抽到当期5星的概率
```

其中,第一行表示从未触发大保底机制抽到当期5星的概率,第二行表示从未触发大保底机制抽到常驻5星的概率,第三行表示从触发大保底机制抽到当期5星的概率。

我们可以定义一个初始状态向量 `v = [0, 0, 1]`,表示初始状态为触发大保底机制。

根据马尔可夫链的性质,我们可以通过迭代计算 `v = v * P` 来得到最终的状态向量 `v`,其中 `*` 表示矩阵乘法。

在这个问题中,我们需要计算的是抽到一张当期5星卡所需的期望抽卡次数。我们可以定义一个计数器 `count`,初始值为0,每次迭代时将计数器加1,直到状态向量 `v` 的第一个元素(从未触发大保底机制抽到当期5星的概率)大于0。

以下是使用Python代码计算期望抽卡次数的示例:

```python
import numpy as np

def calculate_expectation(p):
P = np.array([[1/2, 1/2, 0],
[1/2, 0, 1/2],
[p, 0, 1-p]])
v = np.array([0, 0, 1])
count = 0

while v[0] == 0:
v = np.dot(v, P)
count += 1

return count

p = 0.5 # 抽中5星的概率
expectation = calculate_expectation(p)
print("期望抽卡次数:", expectation)
```

请注意,这个计算结果是一个理论上的期望值,实际抽卡结果可能会有一定的偏差。
221381
领取福利

微信扫码领取福利

微信扫码分享