📅  最后修改于: 2023-12-03 15:23:25.308000             🧑  作者: Mango
这个问题可以用递推来解决。令 $p_n$ 表示 N 次掷硬币中没有将两个连续的头聚集在一起的概率。我们考虑如何递推 $p_n$。
对于第 $n$ 次掷硬币,有如下两种情况:
第 $n$ 次掷的是正面,那么第 $n-1$ 次一定是反面,且前 $n-2$ 次必须都是反面。概率为 $p_{n-2} \times \frac{1}{2}$。
第 $n$ 次掷的是反面,那么前 $n-1$ 次必须都没有将两个连续的头聚集在一起。概率为 $p_{n-1} \times \frac{1}{2}$。
因此,可以得到 $p_n$ 的递推式:
$$p_n = \begin{cases} 1 & (n=0) \ \frac{1}{2} & (n=1) \ \frac{1}{2}p_{n-1} + \frac{1}{2}p_{n-2} & (n \geq 2) \end{cases}$$
接下来是一个 Python 实现:
def probability_of_no_adjacent_heads(n):
p0, p1 = 1, 1/2
if n == 0:
return p0
elif n == 1:
return p1
for i in range(2, n+1):
p = 1/2 * p1 + 1/2 * p0
p0, p1 = p1, p
return p
这个函数的参数是掷硬币的次数 $n$,返回值是在 $n$ 次掷硬币中没有将两个连续的头聚集在一起的概率。
使用示例:
>>> probability_of_no_adjacent_heads(4)
0.6875
Markdown 返回格式如下:
## 在N次掷硬币中没有将两个连续的头聚集在一起的概率
这个问题可以用递推来解决。令 $p_n$ 表示 N 次掷硬币中没有将两个连续的头聚集在一起的概率。我们考虑如何递推 $p_n$。
对于第 $n$ 次掷硬币,有如下两种情况:
1. 第 $n$ 次掷的是正面,那么第 $n-1$ 次一定是反面,且前 $n-2$ 次必须都是反面。概率为 $p_{n-2} \times \frac{1}{2}$。
2. 第 $n$ 次掷的是反面,那么前 $n-1$ 次必须都没有将两个连续的头聚集在一起。概率为 $p_{n-1} \times \frac{1}{2}$。
因此,可以得到 $p_n$ 的递推式:
$$p_n = \begin{cases} 1 & (n=0) \\ \frac{1}{2} & (n=1) \\ \frac{1}{2}p_{n-1} + \frac{1}{2}p_{n-2} & (n \geq 2) \end{cases}$$
接下来是一个 Python 实现:
```python
def probability_of_no_adjacent_heads(n):
p0, p1 = 1, 1/2
if n == 0:
return p0
elif n == 1:
return p1
for i in range(2, n+1):
p = 1/2 * p1 + 1/2 * p0
p0, p1 = p1, p
return p
这个函数的参数是掷硬币的次数 $n$,返回值是在 $n$ 次掷硬币中没有将两个连续的头聚集在一起的概率。
使用示例:
>>> probability_of_no_adjacent_heads(4)
0.6875