gpt4 book ai didi

python - 为什么当随机生成 "guess"数字时该程序可以工作,但当它基于上限和下限的平均值时却不能工作?

转载 作者:太空宇宙 更新时间:2023-11-03 21:04:02 24 4
gpt4 key购买 nike

我正在用 Python 编写代码来模拟猜谜游戏,一个人在一定范围内选择一个随机数,另一个人必须猜测它。第一个人会告诉第二个人他们的猜测是否太高或太低。我试图找出随机选取的数字的某些上限所需的平均猜测次数(我将下限保持为 1)。我为第二个玩家设置了两种“策略”:一种是他们在之前猜测设置的上限和下限之间选择随机数,另一种是他们总是猜测两个界限的平均值。

我最初没有在随机猜测上添加 round() 函数,但我认为添加它可以解决问题。我还设置我的计算机输出猜测和实际数字之间的差异,看看出了什么问题。

while right==0:
#the two methods of guessing
if o==1:
guess=random.randint(x,y)
if o==2:
guess=int(round((x+y)/2))
if guess<number:
#sets lower bound as the guess if the guess is too low
x=guess
elif guess>number:
#sets upper bound as the guess if the guess is too high
y=guess
else:
right=1

我期望这两种方法都能够计算结果,对于较小的数字,它们确实可以。然而,当我尝试计算随机挑选的数字 1 到 googol 的平均猜测次数时,第一种方法有效,但第二种方法无效。当我将计算机设置为输出猜测值与实际数字之间的差异时,我预计它会变得越来越小,直到达到 0(两个数字相等)。第一种方法发生了这种情况,但是当我尝试第二种方法时,猜测总是停在某个数字上。我将猜测值与数字之间的差异输出了三次,这就是它停止的三个数字:

-872708632555842351491581711811827543535535573132668221579096061472556190196974407542

450599818234666564246053810455950002658663408825326497921624797530090552669446353142

49016676324222343388551228825274910790413155248002458659403784218988029381383159387

最佳答案

并非所有整数都可以表示为 float 。一个 float 与下一个 float 之间的差距不是固定的,而是随着 float 大小的增大而增大。这意味着,对于足够大的浮点 fx,next(fx)-fx>2,因此您将在 fx 到 next(fx) 之间留下一个不会被表示的整数。 enter image description here

关于python - 为什么当随机生成 "guess"数字时该程序可以工作,但当它基于上限和下限的平均值时却不能工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55544297/

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