鱼C论坛

 找回密码
 立即注册
查看: 68|回复: 3

[已解决]Python课程最新版第八讲习题求助

[复制链接]
发表于 昨天 14:57 From FishC Mobile | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
Python课程最新版第八讲习题求助,其中,num = random.randint(1, 10)我很困惑,因为生成的是随机整数,所以生成内容其实是1~9,那正反的概率应该是4/9和5/9,不一样啊。

我知道硬币正反并不是百分百为1/2,因为刻画图案的差异,但此题情景假设均为1/2。第一次发帖,不太会排版,请见谅~

全部代码为:

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

最佳答案
昨天 14:58
在代码中使用 `random.randint(1, 10)` 生成的是 1 到 10 的随机整数。因此,生成的数可能是 1, 2, 3, ..., 10 这十个数中的一个。如果没有特别的干预,这些数中有五个是奇数 (1, 3, 5, 7, 9),五个是偶数 (2, 4, 6, 8, 10)。因此,代码中正反面的概率都是 5/10,也即是 1/2。

所以,在抛硬币的模拟中,正面和反面出现的概率应是相等的 (即 50%)。代码中的逻辑如下:
- 如果随机数 `num` 是奇数 (`num % 2` 得到 `True`),则打印 "正面"。
- 如果随机数 `num` 是偶数 (`num % 2` 得到 `False`),则打印 "反面"。

这样设计实际上模拟了公平的抛硬币实验,正面和反面都是 50% 的概率。

如果您想修改代码确保生成的是 1 到 9 的整数,只需将 `random.randint(1, 10)` 改为 `random.randint(1, 9)`。但这样会改变概率,因为1到9之间有4个偶数和5个奇数,因此概率会变成 4/9 和 5/9。


希望对您理解这段代码有所帮助!如果还有其他问题,请随时提问。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 昨天 14:58 | 显示全部楼层    本楼为最佳答案   
在代码中使用 `random.randint(1, 10)` 生成的是 1 到 10 的随机整数。因此,生成的数可能是 1, 2, 3, ..., 10 这十个数中的一个。如果没有特别的干预,这些数中有五个是奇数 (1, 3, 5, 7, 9),五个是偶数 (2, 4, 6, 8, 10)。因此,代码中正反面的概率都是 5/10,也即是 1/2。

所以,在抛硬币的模拟中,正面和反面出现的概率应是相等的 (即 50%)。代码中的逻辑如下:
- 如果随机数 `num` 是奇数 (`num % 2` 得到 `True`),则打印 "正面"。
- 如果随机数 `num` 是偶数 (`num % 2` 得到 `False`),则打印 "反面"。

这样设计实际上模拟了公平的抛硬币实验,正面和反面都是 50% 的概率。

如果您想修改代码确保生成的是 1 到 9 的整数,只需将 `random.randint(1, 10)` 改为 `random.randint(1, 9)`。但这样会改变概率,因为1到9之间有4个偶数和5个奇数,因此概率会变成 4/9 和 5/9。


希望对您理解这段代码有所帮助!如果还有其他问题,请随时提问。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 昨天 15:02 From FishC Mobile | 显示全部楼层
FishC 发表于 2024-12-20 14:58
希望对您理解这段代码有所帮助!如果还有其他问题,请随时提问。

以上回复来自 FishC AI 小助理 ...

我记得random的随机范围是一个半开半闭区间呀,为什么会包含10呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 昨天 15:02 | 显示全部楼层
花花笑笑 发表于 2024-12-20 15:02
我记得random的随机范围是一个半开半闭区间呀,为什么 ...


在 Python 中,`random.randint(a, b)` 函数用于生成一个[a, b](闭区间)范围内的随机整数,因此会包含 `b`。所以 `random.randint(1, 10)` 会生成1到10之间的随机整数,包括1和10。不是您所记得的半开半闭区间哦。

如果您需要不包含10的范围,可以使用 `random.randrange(1, 10)` ,这样生成的随机数范围就是1到9了。

如果还有疑问,请继续提问哦~

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-21 21:00

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表