求助:如何用Python实现自动查找随机数的高效程序?
用二分法高效查找随机数a
你的代码逻辑绕且冗余,没正确维护查找范围,用二分查找能简洁高效解决问题——因为我们明确知道a的范围是0到50,每次取当前范围的中间值对比,就能快速缩小范围直到找到目标数。
优化后的代码
import random # 生成目标随机数 a = random.randint(0, 50) # 初始化查找范围的上下界 low = 0 high = 50 while True: # 取当前范围的中间值作为b b = (low + high) // 2 if b == a: print(f"找到随机数了!a = {a}") break elif b > a: # b比a大,说明a在更小的区间,调整上界 high = b - 1 else: # b比a小,说明a在更大的区间,调整下界 low = b + 1
说明
- 这个逻辑是标准的二分查找,最多6次循环就能找到目标(因为2^6=64>50),效率远高于你原来的写法。
- 如果一定要用
statistics.mean,可以把b = (low + high) // 2改成b = int(statistics.mean([low, high])),但整数除法更直接高效。 - 你原来的代码问题在于没有维护查找的上下边界,每次盲目取0和b的均值,逻辑混乱,容易走无效步骤。
内容的提问来源于stack exchange,提问作者leoprosy
相关产品推荐
相关产品推荐

