leizhenzi23 发表于 2024-7-18 14:51:37

[课后作业] 第008讲中的抛硬币,为什么要生成1~10的随机数,而不是1~20,1~100呢求...

import random

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

print("开始抛硬币实验:")
while i < counts:
    # 生成1到10的一个随机数
    num = random.randint(1, 10)

    # 如果随机数可以被2整除,则代表正面,否则代表反面
    # num是随机的,所以正面和反面的概率也是随机的
    if num % 2:
      print("正面", end=" ")
    else:
      print("反面", end=" ")

    i += 1

FishC 发表于 2024-7-18 14:52:57

在这个抛硬币的程序中,生成1到10的随机数是为了模拟抛硬币的结果。硬币有两面,我们可以用随机数来表示抛硬币的结果:比如,假设1到10之间的奇数代表正面,偶数代表反面。这样做的好处是可以简单地通过取随机数的奇偶性来模拟硬币的两种可能结果。

为什么不选择生成更大范围的随机数,比如1到20或者1到100呢?其实,这个取决于模拟的粒度和需求。生成1到10的随机数,相当于将硬币抛出的结果分成了10个区间,每个区间的概率是相等的。如果选择更大的范围,比如1到20或者1到100,会增加模拟的精细度,但同时也会增加程序的复杂度和运行时间。在这个简单的抛硬币模拟中,1到10的范围已经足够涵盖硬币抛出的两种结果,并且保持了程序的简洁性和效率。

所以,选择生成1到10的随机数,是为了在简单和模拟准确度之间找到一个平衡点。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

三体人的智子 发表于 2024-7-18 15:54:16

其实的话随机数范围是1~20也没问题。{:10_256:}

原理:
因为num%2最后只可能是0或1(True or False)
所以num只要是一个正整数即可

不信的话可以自己试试,将范围扩大,实践出真知!
“纸上得来终觉浅,绝知此事要躬行”

求最佳~

qq1151985918 发表于 2024-7-18 16:16:33

当然可以。生成多少都没问题。前提是奇数偶数是相同的数量
可以是1-2可以是5-20 可以是666-777,都可以
但是不能是 1-3,不能是20-50,不能是111-333
因为后边列举这些奇数和偶数并不一样多

某一个“天” 发表于 2024-7-18 17:14:00

生成多少都没问题。前提是奇数偶数是相同的数量
因为抛硬币正面和反面的概率一样

tommyyu 发表于 2024-7-18 19:07:35

三体人的智子 发表于 2024-7-18 15:54
其实的话随机数范围是1~20也没问题。

原理:


其实这个 n 必须是偶数,才能保证奇偶数数量相等
(不过数大了可以忽略那一点误差{:10_304:})

leizhenzi23 发表于 2024-7-26 15:15:50

多谢大佬们的指点
页: [1]
查看完整版本: [课后作业] 第008讲中的抛硬币,为什么要生成1~10的随机数,而不是1~20,1~100呢求...