概率作业代码未得预期结果:抛硬币净收益$20概率求解及排查
问题分析与结论
数学推导:该事件不可能发生,概率为0
设8次抛掷中正面出现次数为( k )(( k )必须是0到8之间的整数),反面次数则为( 8-k )。根据收益规则,净收益计算公式为:
[
5k - 3(8 - k) = 20
]
展开求解:
[
8k - 24 = 20 \
8k = 44 \
k = 5.5
]
正面次数( k )必须是整数,不存在满足条件的( k ),因此8次抛掷后净收益恰好为$20的概率为0——这就是你模拟上千次都得不到该结果的原因,和代码bug无关。
代码验证示例
以下是可运行的Python验证代码,运行后会确认净收益为20的情况从未出现:
import random def run_trial(): net_gain = 0 for _ in range(8): # 模拟公平硬币抛掷:正面概率0.5 if random.random() < 0.5: net_gain += 5 else: net_gain -= 3 return net_gain total_trials = 10000 success_count = 0 for _ in range(total_trials): gain = run_trial() if gain == 20: success_count += 1 print(f"模拟{total_trials}次后,净收益为20的次数:{success_count}") print(f"模拟得出的概率:{success_count / total_trials:.6f}")
运行结果会显示success_count始终为0,完全符合数学推导的结论。
内容的提问来源于stack exchange,提问作者Sujit
相关产品推荐
相关产品推荐

