gpt4 book ai didi

python - Python 中的 fizzbuzz 使用随机,它是如何工作的?

转载 作者:太空宇宙 更新时间:2023-11-03 13:18:45 26 4
gpt4 key购买 nike

我很难弄清楚下面的代码是如何工作的:

import random

for i in range(0, 100):
if not i % 15:
random.seed(1178741599)
print [i+1, "Fizz", "Buzz", "FizzBuzz"][random.randint(0,3)]

我知道当 i15 整除时,random 将使用相同的 seed 因此 randint(0, 3) 将始终返回相同的索引,但是当我尝试

for i in range(100):
random.seed(1178741599)
print random.randint(0,3) #always print 0

上面的代码总是打印0不应该是3吗(因为“FizzBu​​zz”在list [i+1, "Fizz", "Buzz", "FizzBu​​zz"]?(这是正确的行为,对应于 i+1在列表中。)

i 可以被 35 整除时呢?

种子1178741599有什么神奇之处?

编辑:正如 jonrsharpe 所指出的,fizzbuzz 代码仅适用于 python 2.x

最佳答案

random.seed(n)

表示“将随机数生成器重置到某个已知位置 n”。这意味着可以提前知道生成器的 future 输出。它对于一遍又一遍地使用相同的“随机”数据进行测试很有用。

此代码的作用是每 15 步重置一次生成器,因此您每次都会得到相同的 15 个“随机”整数序列(因此,也是列表中的字符串)。在 Python 2.x 中,重置后的第一个“随机”整数始终是 0(当我刚才在 Python 3 中尝试时,在 random.seed(1178741599) 之后我得到 random.randint(0, 3) == 1).

请注意,此代码执行传统 FizzBu​​zz 程序执行的操作,并且在很大程度上取决于随机 实现。它在 2.7.3 中对我有用,但在 3.3.2 中不起作用(参见 Why is seeding the random number generator not stable between versions of Python?)。

关于python - Python 中的 fizzbuzz 使用随机,它是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20957693/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com