gpt4 book ai didi

python - Neumann 的随机生成器 - Python 3

转载 作者:太空宇宙 更新时间:2023-11-04 01:13:27 25 4
gpt4 key购买 nike

我正在研究 Code Abbey 问题 23,Neumann 的随机生成器。目标是使用给定的算法从列表中的每个值生成一系列随机数,并继续直到算法生成与我们开始时相同的数字。然后,打印到达循环所需的遍数。我似乎无法让我的代码工作;我很确定这与 while 循环有关。我将不胜感激任何帮助,更重要的是,我做错了什么的解释。

这是我的代码:

cases = int(input())
values = [int(x) for x in input().split()]

def random_number(values):
for value in values:
random = pow(value, 2)
passes = 0
equal = False

while not equal:

if len(str(random)) < 8:
random = int(str(random).zfill(8))

random = (random // 100) % 10000

passes += 1

if random == value:
equal = True
else:
random = pow(random, 2)

print(passes, end=' ')

random_number(values)

这是我的输入:

12
6239 8935 4715 8785 9737 9251 3251 3544 9631 4655 903 7589

最佳答案

问题:中间方 block 方法并不总是返回到起始种子,但这是您测试的唯一结果。该序列可以返回一些已经访问过的数字而不是种子,在这种情况下 random 永远不会等于 value,并且您的程序将不会检测到重复。 (为了快速演示这一点,请尝试使用起始值 12 手动执行算法 - 您会发现它开始非常快速地重复,但再也不会访问 12)。

解决方案: 不是仅仅存储原始值并将 random 与其进行比较,您需要存储到目前为止访问过的每个值的列表,并在 时终止>随机出现在该列表中的任何位置。

关于python - Neumann 的随机生成器 - Python 3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26191540/

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