第一次实验
有n个人抛掷硬币,若有一人的硬币与其它n-1人的不同,则游戏结束,问:第一次就结束的概率是多少?求游戏结束时抛掷硬币的平均次数。
请结合概率的统计定义,编程仿真实现并求解以上问题。
已知: n=6时,概率为0.1875(仅用于仿真比较)
import random
# 输入参与实验的人数
person_num = int(input("请输入参与实验的人数:"))
# 初始化实验次数和成功次数
test_count = 0
success = 0
# 模拟实验总次数
Max = 2000
# 模拟实验过程
while True:
count1 = 0 # 正面朝上人数
count2 = 0 # 反面朝上人数
# 对于每个人,模拟抛硬币
for i in range(person_num):
result = random.randint(0, 99) # 生成0-99的随机数
# 判断结果,并更新计数
if result >= 50:
count1 += 1
else:
count2 += 1
test_count += 1 # 增加实验次数
# 检查是否成功(恰好有一个正面或反面)
if count1 == 1 or count2 == 1:
success += 1
# 达到总次数后退出循环
if test_count == Max:
break
# 计算成功的概率
p = success / test_count
print("成功的概率:", p)
2234113
import random
# 输入参与实验的人数
person_num = int(input("请输入参与实验的人数:"))
# 初始化成功次数和总次数
total_success = 0 # 成功选中的总次数
total_attempts = 0 # 被选中需要投掷的总次数
# 模拟实验次数
Max = 100000
# 模拟实验过程
count = 0 # 记录实验次数
while True:
count1 = 0 # 正面朝上人数
count2 = 0 # 反面朝上人数
# 对于每个人,模拟抛硬币
for i in range(person_num):
result = random.randint(0, 99) # 生成0-99的随机数
# 判断结果,并更新计数
if result >= 50:
count1 += 1
else:
count2 += 1
count += 1 # 增加实验次数
# 检查是否成功(恰好有一个正面或反面)
if count1 == 1 or count2 == 1:
total_success += 1
# 无论是否成功,都增加总尝试次数
total_attempts += 1
# 达到总次数后退出循环
if count == Max:
break
# 计算被选到要投掷的次数(总尝试次数与成功次数的比值)
p = total_attempts / total_success if total_success > 0 else 0 # 避免除以零的情况
print("投掷次数:", p)