鱼C论坛

 找回密码
 立即注册
查看: 208|回复: 12

[快问快答] 第007讲:改进我们的小游戏(下)

[复制链接]
发表于 2025-7-1 18:54:55 | 显示全部楼层 |阅读模式
购买主题 已有 7 人购买  本主题需向作者支付 5 鱼币 才能浏览
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2025-7-4 15:36:59 | 显示全部楼层
@FishC 下列代码执行后,会输出几次"FishC"?

import random
for i in range(random.randint(1, 3)):
    print("FishC")

A. 1次
B. 2次
C. 3次
D. 1到3次,随机
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-7-4 15:37:30 | 显示全部楼层
nickniu 发表于 2025-07-04 15:36
@FishC 下列代码执行后,会输出几次"FishC"?

impo ...


这道题考察的是循环次数由随机数决定。让我们分析代码:


  1. import random
  2. for i in range(random.randint(1, 3)):
  3.     print("FishC")
复制代码


关键点:
1. random.randint(1, 3) 会随机生成 1、2 或 3
2. range(n) 会生成从 0 到 n-1 的序列(共 n 次循环)
3. 因此循环次数 = 随机数本身(1/2/3次)

执行结果:
- 若随机到 1 → 输出 1 次
- 若随机到 2 → 输出 2 次
- 若随机到 3 → 输出 3 次

所以输出次数是 1到3次的随机值,正确答案是 D

选项分析:
A. 错误(可能但非必然)
B. 错误(可能但非必然)
C. 错误(可能但非必然)
D. 正确(覆盖所有可能性)

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-7-6 11:51:10 | 显示全部楼层
@FishC 用random.setstate(x)后,下列哪项是对的?
A. 改变种子为x
B. 恢复到x保存的随机数状态
C. 删除变量x
D. 随机输出一个x
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-7-6 11:51:34 | 显示全部楼层
Fu_Sheep 发表于 2025-07-06 11:51
@FishC 用random.setstate(x)后,下列哪项是对的?
A ...


在Python的`random`模块中,`setstate(x)`函数的作用是恢复之前保存的随机数生成器状态(由`getstate()`生成)。因此:

正确选项:B. 恢复到x保存的随机数状态


错误选项解析:
  • A:错误。改变种子需用 random.seed(),而非 setstate()
  • C:错误。该操作不会删除变量 x
  • D:错误。函数无返回值,也不输出随机数。


示例代码:

  1. import random

  2. # 保存当前状态
  3. state = random.getstate()

  4. # 生成随机数(改变状态)
  5. print(random.random())  # 例如输出 0.12345

  6. # 恢复之前保存的状态
  7. random.setstate(state)

  8. # 再次生成相同的随机数(与第一次相同)
  9. print(random.random())  # 再次输出 0.12345
复制代码


关键点:
getstate()setstate() 用于精确控制随机数序列的断点恢复,而非设置种子值。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-7-11 20:48:42 | 显示全部楼层
@FishC 默认情况下,random模块的种子是?
A. 固定值
B. 用户输入
C. 随机整数
D. 操作系统当前时间
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-7-11 20:49:38 | 显示全部楼层
@FishC 随机数的“种子”主要有什么作用?
A. 增加内存
B. 控制循环次数
C. 决定随机数序列的起点,可复现随机序列
D. 改变数据类型
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-7-11 20:50:11 | 显示全部楼层
@FishC 为什么random模块生成的随机数叫“伪随机数”?
A. 完全不可预测
B. 随机性不够
C. 只能生成整数
D. 可以被重现,依赖种子
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-7-11 20:50:44 | 显示全部楼层
芝士拌榴莲 发表于 2025-07-11 20:49
@FishC 随机数的“种子”主要有什么作用?
A. 增加内 ...


鱼油你好!随机数的“种子”主要作用是决定随机数序列的起点,这样在相同的种子下,可以生成完全相同的随机数序列,便于测试、调试和复现结果。因此,正确答案是 C. 决定随机数序列的起点,可复现随机序列

简单解释:种子用于初始化随机数生成器的状态。例如,在Python中,你可以使用 random.seed(42) 设置种子,然后每次运行代码都会得到相同的随机数序列:
  1. import random
  2. random.seed(42)  # 设置种子为42
  3. print(random.randint(1, 100))  # 总是输出相同的随机整数
复制代码

这有助于确保结果可预测,但不会增加内存、控制循环或改变数据类型(选项A、B、D错误)。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-7-11 20:51:09 | 显示全部楼层
@FishC 下列代码执行后,会输出几次"FishC"?

import random
for i in range(random.randint(1, 3)):
    print("FishC")

A. 1次
B. 2次
C. 3次
D. 1到3次,随机
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-7-11 20:52:44 | 显示全部楼层
芝士拌榴莲 发表于 2025-07-11 20:51
@FishC 下列代码执行后,会输出几次"FishC"?

impo ...


这道题目的关键在于理解 random.randint(1, 3) 的行为:它会随机生成 1、2 或 3 中的一个整数。

因此:
- 当随机数为 1 时,循环执行 1 次,输出 1 次 "FishC"
- 当随机数为 2 时,循环执行 2 次,输出 2 次 "FishC"
- 当随机数为 3 时,循环执行 3 次,输出 3 次 "FishC"

输出次数取决于随机数的结果,所以最终输出次数是 1~3 次中的随机值。

正确答案是:
D. 1到3次,随机

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-7-11 20:54:59 | 显示全部楼层
芝士拌榴莲 发表于 2025-07-11 20:48
@FishC 默认情况下,random模块的种子是?
A. 固定值 ...


在Python的random模块中,默认种子的设置规则如下:

  • 若未显式设置种子(即不调用 random.seed()),则首次使用random模块时:
    • 优先尝试使用操作系统提供的随机源(如 /dev/urandom 或加密API)
    • 若操作系统随机源不可用,则使用当前系统时间(精确到微秒)
  • 根据官方文档描述,默认行为等效于以 None 为参数调用 random.seed(None),此时:
    • 核心逻辑是依赖操作系统环境,但主要设计意图是使用动态值(非固定值)
    • 选项中 D. 操作系统当前时间 最符合默认设计原则



正确选项:D. 操作系统当前时间

验证示例:

  1. import random

  2. # 不设置种子时,两次运行程序输出不同
  3. print(random.randint(1, 100))  # 每次运行结果不同(依赖动态种子)
复制代码


错误选项排除:
  • A:固定值 → 错误(否则每次运行随机序列相同)
  • B:用户输入 → 错误(无需用户干预)
  • C:随机整数 → 描述不准确(种子来源是系统环境,非模块自主生成)


以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-7-11 20:56:49 | 显示全部楼层
芝士拌榴莲 发表于 2025-07-11 20:50
@FishC 为什么random模块生成的随机数叫“伪随机数” ...


计算机中的随机数生成器(如Python的`random`模块)被称为“伪随机数”,因为它们是通过确定性算法生成的序列,而非真正的物理随机过程。正确答案是:**D. 可以被重现,依赖种子**。

伪随机数生成器(PRNG)的工作原理:
1. 需要一个初始值(种子,seed)。
2. 通过数学公式(如线性同余法)计算下一个“随机数”。
3. 相同的种子会生成完全相同的序列。

示例:

  1. import random

  2. # 设置种子为42
  3. random.seed(42)
  4. print(random.randint(1, 100))  # 输出:82(固定)
  5. print(random.randint(1, 100))  # 输出:15(固定)

  6. # 重置相同种子
  7. random.seed(42)
  8. print(random.randint(1, 100))  # 再次输出82(重现性)
复制代码


其他选项分析:
- A:伪随机数在未知种子时难以预测,但理论上可预测(非“完全不可预测”)。
- B:现代算法随机性足够强(如密码学用途),但本质仍是伪随机。
- C:`random`模块可生成浮点数(如random.random())。

关键点:伪随机数的“伪”体现在其可重现性(依赖种子),而真随机数源于物理现象(如量子噪声),不可重现。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-27 08:51

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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