Python 从掷硬币实验中生成数据

Python 从掷硬币实验中生成数据,python,statistics,coin-flipping,Python,Statistics,Coin Flipping,我有一枚硬币,硬币有记忆。i、 e.最后一次翻转会影响此翻转的头部概率。如何编写代码从该过程生成数据?具体来说,通过这个过程,我希望能够生成n=1000个数据点 P(H | H_{-1}) != P(H | T_{-1}) #probability of heads given heads in last flip is not equal to probability of heads given tails in last flip P(T | H_{-1}) != P(T | T_{-1}

我有一枚硬币,硬币有记忆。i、 e.最后一次翻转会影响此翻转的头部概率。如何编写代码从该过程生成数据?具体来说,通过这个过程,我希望能够生成n=1000个数据点

P(H | H_{-1}) != P(H | T_{-1}) #probability of heads given heads in last flip is not equal to probability of heads given tails in last flip
P(T | H_{-1}) != P(T | T_{-1}) #probability of tails given heads in last flip is not equal to probability of tails given tails in last flip
{-1}表示最后一次翻转

Assume P( H | H in last flip ) = 0.75
P( H | T in last flip ) = 0.30
另外,假设第一次抛硬币时正面或反面落下硬币的概率相等


非常感谢您的帮助

这是一个可以用于实验的骨架

import random

def flip(last_flip):
    if last_flip == "H":
        #INSERT LOGIC FOR PROBABILITY IF PREVIOUS FLIP WAS HEADS
        heads_probability = 0.75
    elif last_flip == "T":
        #INSERT LOGIC FOR PROBABILITY IF PREVIOUS FLIP WAS TAILS
        heads_probability = 0.30
    else:
        heads_probability = 0.5

    tails_probability = 1-heads_probability
    flip = random.choices(["H", "T"], weights = (heads_probability, tails_probability))[0]

    return flip


flips = []
lastFlip = None
for n in range(1000):
    newFlip = flip(lastFlip)
    flips.append(newFlip)
    lastFlip = newFlip
这将使用
random.choices
函数选择概率不均匀的正面或反面。
flip
函数将上一次翻转作为输入,并计算新的抛硬币概率。你需要用你在实验中使用的逻辑(注释在哪里)来填充这一部分


代码的主要部分翻转硬币并将结果存储在数组中。在下一次试验中,它使用上一个flip作为前面讨论的
flip
函数的输入。

你能简单地告诉我这两个表达式的含义吗?@CutePanda:是的,我刚刚在更新的帖子中用简单的英语解释了这两个表达式。你如何确定在任何给定时间出现头部翻转的概率?是否有特定的数值?如果你展示一个有三个翻转的例子,以及每一个翻转的概率,你可能会更容易解释。@AkilanManivannan:我用一些虚构的值更新了这篇文章。我只是修改了我的代码以适合你的例子。这能解决你的问题吗?这个答案是金色的!非常感谢你这么清楚的解释!这对我有用!