从抛硬币实验生成数据
Generate data from a coin flipping experiment
我有一枚硬币,硬币有记忆。即最后一次翻转会影响这次翻转正面朝上的概率。我如何编写代码从这个过程中生成数据?具体来说,从这个过程中,我希望能够生成 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} represents last flip
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
函数来 select 正面或反面的概率不均匀。 flip
函数将上一次抛硬币作为输入,计算新的抛硬币概率。您将需要使用您用于实验的逻辑(注释所在的位置)填写此部分。
代码的主要部分抛硬币并将结果存储在一个数组中。对于下一次试验,它使用之前的翻转作为前面讨论的 flip
函数的输入。
我有一枚硬币,硬币有记忆。即最后一次翻转会影响这次翻转正面朝上的概率。我如何编写代码从这个过程中生成数据?具体来说,从这个过程中,我希望能够生成 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} represents last flip
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
函数来 select 正面或反面的概率不均匀。 flip
函数将上一次抛硬币作为输入,计算新的抛硬币概率。您将需要使用您用于实验的逻辑(注释所在的位置)填写此部分。
代码的主要部分抛硬币并将结果存储在一个数组中。对于下一次试验,它使用之前的翻转作为前面讨论的 flip
函数的输入。