不想秃头的柚子 发表于 2022-9-24 21:39:13

关于课后作业第8讲抛硬币代码的疑问

课后作业第八题题目简单来说,就是要抛200次硬币,随机输出正面或者是反面,答题之后看了答案有点不太理解的地方,求解答

import random

counts = int(input("请输入抛硬币的次数:"))
i = 0

print("开始抛硬币实验:")
while i < counts:
    num = random.randint(1, 10) ----这里设置(1,10)是有什么原因的么?还是随便都行?因为我尝试了设置200和2,都能正常跑,所以想问问是有什么特殊原因么?

    if num % 2:
      print("正面", end=" ")
    else:
      print("反面", end=" ")

    i += 1

wp231957 发表于 2022-9-24 21:42:07

随意了,反正100个数里面只有奇偶两种数据
10000个数据里面也只有奇偶两种数据而已

Twilight6 发表于 2022-9-24 21:42:56


其实想设置什么都行,只是需要用程序模拟抛硬币

理想情况下抛硬币的结果最终正反都会接近0.5,所以用程序模拟出随机数也都接近 0.5 即可

源代码中是从 1~10,也就是奇数和偶数恰好都五五开

那么自然在随机的情况下,最终执行 if和 执行 else 的概率也是接近 0.5 的,也就达到了程序模仿抛硬币的效果

所以,综上所述,实际上 randint(1,2) 就可以满足条件了,但是要注意,你给予的数,奇偶要分半,才能模拟出概率分半的效果,否则概率会有偏差

不想秃头的柚子 发表于 2022-9-24 21:46:22

Twilight6 发表于 2022-9-24 21:42
其实想设置什么都行,只是需要用程序模拟抛硬币

理想情况下抛硬币的结果最终正反都会接近0.5,所以用 ...

明白了,谢谢大佬解答~!!
页: [1]
查看完整版本: 关于课后作业第8讲抛硬币代码的疑问