了解查找随机数的算法
我正在尝试找到使用最少步数查找 1-100 之间随机数的最佳算法。您可以使用函数 guess(n)
猜测数字 n,并且您将收到布尔响应 true 或 false。如果响应为假,则答案将始终小于您在函数中输入的猜测值;如果响应为真,则需要更大或猜测本身。
I'm trying to find the best algorithm for finding a random number between 1-100 using the least number of steps. You can guess a number n using the function guess(n)
, and you will receive a boolean response true or false. The answer will always be less than the guess you entered into the function if the response is false; if the response is true, it needs to be larger or the guess itself.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
基本思想:
首先猜测(50)。根据答案,猜测(25)或猜测(75)。
The basic idea:
First guess(50). Depending on the answer, guess(25) or guess(75).
如果您可以判断您的猜测是否大于或小于随机数,那么二分搜索就是您的选择朋友。
否则,如果您只能判断数字是否匹配,我将从中位数 (50.5) 开始交替线性搜索,即从 50 到 1 和从 51 到 100(50、51、49、52...)。
If you can tell whether your guess is greater or smaller than the random number, then Binary Search is your friend.
Else, if you can only tell if the numbers match, I would start alternating linear search from the median (50.5) i.e. from 50 to 1 and from 51 to 100 (50, 51, 49, 52...).