Python 偏硬币抛掷模拟程序

12 2025 年 4 月 | 阅读 5 分钟

抛掷有偏硬币提供了一种有趣的方式来探索概率论和编程。与公平硬币不同,公平硬币出现正面或反面的概率都是相同的,即 50-50,而有偏硬币则对每种结果都有一个固定的、不相等的概率。这为我们提供了一个机会,可以借助计算方法深入研究概率概念并模拟现实世界的随机性。在这篇文章中,我将通过一个 Python 程序向您展示如何模拟抛掷有偏硬币。我将定义一种结果的概率分布,展示如何根据硬币的偏置生成随机结果,并为实现提供见解。无论您是概率论的初学者,还是希望模拟现实世界场景的经验丰富的程序员,本教程都将概述一种易于理解的方法来理解和编写有偏硬币抛掷的代码。

Python 模拟有偏硬币抛掷

步骤 1:有偏硬币抛掷

在此步骤中,我们将给定一个介于 0.0 和 1.0 之间的偏置值,并模拟一次硬币抛掷,该过程会生成一个随机数并将其与偏置值进行比较。如果生成的随机数小于提供的偏置值,则此步骤将返回“正面”。否则,它将返回“反面”。以下是 Python 代码

代码

说明

上面的 Python 代码通过 random 模块生成随机数来模拟抛掷有偏硬币。定义了一个名为 flipBiasedCoin 的函数,它接受一个参数 bias_value。此参数的范围在 0 和 1 之间,表示硬币出现“正面”的概率。例如,bias_value 为 0.7 表示硬币有 70% 的几率出现“正面”,30% 的几率出现“反面”。在 函数内部,random.random() 方法生成一个介于 0(含)和 1(不含)之间的随机值。然后,该函数将此随机数与 bias_value 进行比较。如果生成的随机数小于偏置值,则 flipBiasedCoin 函数返回“正面”。否则,它返回“反面”。这就是硬币抛掷的逻辑,获得正面结果的概率接近指定的偏置值,从而模拟了有偏硬币抛掷的行为。

步骤 2:抛掷模拟

此步骤以抛掷次数和偏置作为输入。抛掷次数表示将抛掷硬币的次数。对于每次抛掷,我们都会记录正面和反面的数量。为此,我们使用字典。

代码

说明

此 Python 函数 simulateFlip 用于模拟指定的有偏硬币抛掷次数,并将正面和反面的结果记录在一个字典中。它接受两个参数:numberOfFlips,表示将抛掷硬币的次数;biaseValue,表示硬币出现“正面”的概率,这是一个介于 0 和 1 之间的浮点值。该函数初始化一个字典 flipResult,其键为“Heads”和“Tails”,值均设置为 0,用于记录每次抛掷的计数。然后,它利用一个循环来执行指定的抛掷次数,在每次迭代中调用 flipBiasedCoin 函数,根据给定的偏置值模拟结果。结果(“正面”或“反面”)用于更新 flipResult 字典中相应的计数。所有抛掷完成后,该函数返回一个 flipResult 字典,显示“正面”和“反面”的最终计数。此函数有效地结合了随机性和偏置模拟,以提供对多次试验中概率结果的见解。

现在,让我们看看驱动代码,这是运行所有这些函数以获得结果的主函数。

代码

说明

驱动代码用于抛掷有偏硬币指定的次数。驱动代码要求用户输入抛掷次数和偏置值,该偏置值表示硬币出现正面的概率。然后,它调用 simulateFlips 函数来执行模拟,并返回一个包含正面和反面计数的字典作为结果。最后,程序显示结果,这些结果显示有偏硬币抛掷产生的正面和反面数量,并根据给定的偏置值进行格式化。

完整的代码如下

代码

输出

 
Enter number of flips: 500
Enter the bias value: 0.7
Results of 500 biased coin tossed with  0.70 bias
Heads: 356
Tails: 144   

说明

上面的代码以 0.7 的偏置值(70%)抛掷硬币 500 次,得到 356 次正面和 144 次反面。