Algorithm 如何在固定超时和尝试次数的情况下实现指数退避/延迟计算?

Algorithm 如何在固定超时和尝试次数的情况下实现指数退避/延迟计算?,algorithm,delay,retry-logic,exponential-backoff,Algorithm,Delay,Retry Logic,Exponential Backoff,我见过的大多数退避/延迟算法都有固定的尝试次数或固定的超时,但不是两者都有 我想在T秒内精确地进行M次尝试,它们之间的间隔是指数级的,因此“T=延迟(0)+延迟(1)+…+延迟(M-1)”,其中“延迟(N)=(e^N-1)/e”(其中N-重试次数) 如何计算上述描述中的“e”值,以便在总超时T内准确地进行M次尝试(预先指定M和T)?由于“T”是“e”的单调函数,您可以执行二进制搜索以找到适合的最佳值 下面是一个示例Python程序,用于在给定“T”和“M”的情况下查找此类“e”: def总时间(

我见过的大多数退避/延迟算法都有固定的尝试次数或固定的超时,但不是两者都有

我想在T秒内精确地进行M次尝试,它们之间的间隔是指数级的,因此“T=延迟(0)+延迟(1)+…+延迟(M-1)”,其中“延迟(N)=(e^N-1)/e”(其中N-重试次数)

如何计算上述描述中的“e”值,以便在总超时T内准确地进行M次尝试(预先指定M和T)?

由于“T”是“e”的单调函数,您可以执行二进制搜索以找到适合的最佳值

下面是一个示例Python程序,用于在给定“T”和“M”的情况下查找此类“e”:

def总时间(e,M):
电流=1
总数=0
对于范围内的i(M):
总计+=当前-1
电流*=e
返回总数
def查找最佳值(T,M):
a、 b=0,T
当abs(a-b)>1e-6时:
m=(a+b)/2.0
如果总时间(m,m)>T:
b=m
其他:
a=m
返回(a+b)/2
e=找到最佳(10,3)
打印([e**n-1表示范围(3)中的n)])