1-100次猜测五次如何获取概率最大的方法呢?
假设一个数是99,对于第一个结果:选择数字50进行尝试,选择数字75进行尝试,以此类推,直到将所有可能的结果都尝试过了,我们可以得到如下表格:
| 50 | 75 | 88 | 94 | 97 | 99 |
|---|---|---|---|---|---|
| 第一次 | 第二次 | 第三次 | 第四次 | 第五次 | 第六次 |
要求尽快找到50或更接近50的数,我们可以在每次选择过程中选择概率最小(即位置离50最近)的数字作为下一次的试猜目标,这种策略被称为“中心挑选法”,它有助于快速定位符合条件的数。
我们考虑计算机游戏中常使用的概率算法,为了使这一过程更为直观且易于理解,我们将采用最简单的二分查找(Binary Search)来实现:
-
设定一个初始的猜测目标,例如99(概率最高)。
-
将每个可能的猜测数字列表划分为两个部分:较小的范围从0开始,较大的范围从99结束。
-
使用二分查找技术来逐步缩小这两个区域之间的差距,每次比较当前猜测目标与较大范围内的数(左侧边界),并将左右边界分别更新为:新的左侧边界(假设左侧索引为x) = (当前位置 - 1) / 左边界,新的右侧边界(假设右侧索引为y) = (当前位置 + 1) / 右边界。 如果新位置(x, y)的值小于或等于目标值(99),那么我们的猜测目标很可能就在左侧搜索区间(0 <= x < y <= 99)内; 否则,我们的猜测目标很可能在右侧搜索区间(99 <= x <= 99 + new右侧边界)内。
-
当找到满足条件的目标位置时,我们停止搜索,并记录下此次试猜的结果,即此数字是目标值的概率,此后,重复步骤3,直到所有可能的猜测区间都被遍历完毕。
以下是一些Python代码示例来实现上述流程:
import random
def find目標_num(guesses):
# 初始化猜测范围
min_range = [0, guesses[-1]]
max_range = [guesses[0], guesses[-1] + 1]
while True:
# 每次使用二分查找并找到可行的猜测范围
x, y = min_range[0], max_range[1]
# 检查当前猜测目标是否处于范围内
if x >= 0 and y <= 99:
return float(x / max_range[0]) * (99 - x + 1) // 2
elif x >= 99 or y <= 0:
break
# 若在搜索过程中未找到匹配的数字,返回最大猜测次数
return max(guesses)
initial_guesses = [99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 36
0
