📜  在N掷硬币中没有将两个连续的头聚集在一起的可能性(1)

📅  最后修改于: 2023-12-03 15:23:25.308000             🧑  作者: Mango

在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 实现:

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