Python - For循环和If语句计算抛硬币的概率

标签 python if-statement for-loop probability

这里的 Python 相当新。我正在尝试计算有偏差的抛硬币事件发生的条件概率。除了 if 语句 部分之外,我已经弄清楚了大部分代码 - 具体来说,我不确定是使用 pass 还是 continue。更具体地说,我希望分母反射(reflect)满足要求的迭代次数,而不是迭代总数。

例如,假设我想计算 6 个组的概率,因为在 10 次抛硬币后我们超过了 5 个组 - 该函数将读取为 simulate_ Three(1000,10,6,5) ,其中参数分别代表 1000 次迭代、10 次抛硬币、6 组和 5 组。假设只有 500 次迭代满足要求 - 因此,结果 的分母是 500,而不是 1000。但是,我不确定代码是否正常工作...

import random
from itertools import groupby
import statistics

# Function for biased coin
def flip(p):
return 'H' if random.random() < p else 'T'

# Simulation
def simulate_three(X, N, Y, Z):
    Outcome = [] # List of results
    for i in range(X): # For loop for the X number of iterations
        flips = [flip(0.6) for j in range(N)] # For loop for N number of coin flips
        if len(list(groupby(flips))) <= Z: # If group condition isn't met
            pass                           # Don't store value and skip
        Outcome.append(len(list(groupby(flips)))) # Otherwise, store to list
    print(sum(Outcome)/(len(Outcome)))     # Print expected value
    print((Y-(sum(Outcome)/(len(Outcome))))/statistics.stdev(Outcome)) # Print probability

最佳答案

Python 文档有 a great section on control flows.简而言之,pass 充当一种占位符,而 continue 将继续进行下一次迭代。

根据我对您描述的理解,您想要继续通过。所以正确的版本应该是这样的:

    if len(list(groupby(flips))) <= Z:
        continue
    Outcome.append(len(list(groupby(flips))))

一个更易读、更明确的版本可能是:

    if len(list(groupby(flips))) <= Z:
        pass
    else:
        Outcome.append(len(list(groupby(flips))))

当然,最直接的版本可能是:

    if len(list(groupby(flips))) > Z:
        Outcome.append(len(list(groupby(flips))))

因此,在这种情况下,只有当列表的长度大于Z时,它才会被添加到您的结果中。

您可以通过强制 flip 函数仅返回 H 来测试这一点。如果控制流按预期工作,您将在倒数第二行抛出被零除的错误。

关于Python - For循环和If语句计算抛硬币的概率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42061617/

相关文章:

python - 修改嵌套字典中的键和值,其中包含列表

python - 没有名为 'mlxtend' 的模块

python - 如何在Python中将行字段更改为列标题?

sql - 伪 IF/Case 帮助

php - 在 PHP + mysql 和 HTML 表中需要一些不合逻辑的帮助

PHP - 错误的字母循环

java - 用 Java 实现 Ragged 2D int 数组金字塔

python - 获取 Pandas 列的总数

python - AES:如何检测输入了错误的密码?

javascript - Node Red 中的 Javascript Else If 语句有问题