Python怎么生成随机数_random模块randint与choice用法
randint(a, b) 生成包含两端的整数随机数,如 randint(1, 6) 返回 1~6(含),易与 range 或 randrange 的左闭右开混淆,导致逻辑错误;使用时须确保 a ≤ b。randint 生成整数随机数,但边界值容易搞反randint 是最常用的整数随机函数,但它和 range 不同:两个参数都**包含在内**。比如 randint(1, 6) 可能返回 1、2、3、4、5 或 6 —— 不是 1 到 5。新手常误以为它像 random.randrange(1, 6) 那样左闭右开,结果多出一个值或少一个值。常见错误现象:ValueError 倒不常有,但逻辑错位很隐蔽,比如模拟骰子却出现 0 或 7;或者做索引时越界(如用 randint(0, len(lst)) 而不是 randint(0, len(lst)-1))。用 randint(a, b) 时,确保 a ,否则直接抛 <code>ValueError需要「左闭右开」行为(如取索引),优先用 randrange(a, b) 或 choice(range(a, b))如果只是想从固定范围选一个整数,且边界明确,randint 最直白;但涉及循环、索引、分片时,建议统一用 randrange 避免混淆choice 适合从序列里抽一个元素,但不能传字符串字面量当“单个选项”choice 的输入必须是**非空序列**(list、tuple、str、bytes 等),但它对 str 的处理常被误解:传入 "abc" 会随机返回 'a'、'b' 或 'c',而不是把整个字符串当一个选项。典型翻车场景:想从几个字符串中随机选一个,却写成 choice("apple", "banana", "cherry") —— 这会报 TypeError: choice() takes exactly one argument;或者误写成 choice("apple"),结果只在字母间挑。立即学习“Python免费学习笔记(深入)”;从多个字符串中选一个,得包成列表:choice(["apple", "banana", "cherry"])如果序列只有一个元素(比如 [42]),choice 永远返回它,不会报错,但可能掩盖逻辑漏洞choice 对 str 和 bytes 是按字符/字节抽,不是按“单词”抽 —— 这是设计如此,不是 bugrandint 和 choice 性能差异小,但 choice 依赖序列长度,randint 不依赖数据两者底层都调用同一个随机数生成器(_random.Random().random()),所以性能差别几乎可以忽略。真正影响选择的是语义和输入结构。 ARTi.PiCS ARTi.PiCS是一款由AI驱动的虚拟头像生产器,可以生成200多个不同风格的酷炫虚拟头像
