在概率论中,抛硬币是一个经典的随机事件。当硬币质地均匀时,抛出正面(Head)和反面(Tail)的概率理论上均为50%。通过重复大量实验,我们可以观察到事件发生的频率逐渐趋近于理论概率,这一现象被称为"大数定律"。下面我们将使用Python代码模拟抛硬币过程,通过实验验证这一概率理论。
import random # 导入random模块,用于生成随机数
up_n = 0 # 记录抛出正面的次数,初始化为0
total_n = 100 # 设定抛硬币的总次数
cnt = 0 # 记录已进行的实验次数,初始化为0
while cnt < total_n: # 当实验次数未达到总次数时,循环执行
result = random.randint(0, 1) # 生成0或1的随机整数,0表示反面,1表示正面
print(result) # 输出每次抛硬币的结果
if result == 1: # 如果结果为1(正面)
up_n += 1 # 正面次数加1
cnt += 1 # 实验次数加1
p = up_n / total_n # 计算正面出现的频率(概率)
print('抛出正面的概率为:' + str(p)) # 输出最终结果
random.randint(0, 1) 函数用于生成0或1的随机整数,其中0代表硬币反面,1代表正面。每次调用该函数时,生成正、反面的概率理论上各为50%。
while 循环控制实验次数,当 cnt(已完成次数)小于 total_n(总次数100)时,持续执行抛硬币操作。up_n 变量实时统计正面出现的次数,cnt 变量记录当前实验进度。实验结束后,通过 up_n / total_n 计算正面出现的频率,该频率可近似视为抛硬币出现正面的概率,并通过 print 函数输出结果。
运行上述代码后,输出结果可能类似 0, 1, 1, 0, ...(100个0或1的序列),最终计算的正面概率可能在0.5左右波动(例如0.48、0.53等)。这是因为100次实验属于较小样本量,频率与理论概率可能存在偏差。
total_n 增大至1000、10000次,会发现正面概率逐渐接近0.5。例如,当 total_n = 10000 时,结果可能趋近于0.499或0.502,体现了"实验次数越多,频率越接近理论概率"的规律。total_n 变量,观察不同样本量下的概率变化。该模型可延伸至其他随机事件模拟,例如:
random.randint(1, 6) 生成1 - 6的随机数,模拟骰子点数分布。if result == 100)。通过Python模拟抛硬币实验,我们直观地理解了概率与频率的关系,以及大数定律的实际体现。这类随机模拟不仅是概率论的基础验证方法,也在统计学、机器学习、金融建模等领域有广泛应用。如需进一步探索,可尝试增加实验次数、对比多组实验结果,或结合可视化库(如Matplotlib)绘制频率变化曲线,更直观地展示概率收敛过程。