human
Complete this python program:
def backoffPolicy(initialDelay=1.0, maxDelay=60.0, factor=1.5, jitter=_goodEnoughRandom):
assistant
#Here is the Python program you requested.

    """A timeout policy for L{ClientService} which computes an exponential backoff
    interval with configurable parameters.
    @since: 16.1.0
    @param initialDelay: Delay for the first reconnection attempt (default
    1.0s).
    @type initialDelay: L{float}
    @param maxDelay: Maximum number of seconds between connection attempts
    (default 60 seconds, or one minute).  Note that this value is before
    jitter is applied, so the actual maximum possible delay is this value
    plus the maximum possible result of C{jitter()}.
    @type maxDelay: L{float}
    @param factor: A multiplicative factor by which the delay grows on each
    failed reattempt.  Default: 1.5.
    @type factor: L{float}
    @param jitter: A 0-argument callable that introduces noise into the delay.
    By default, C{random.random}, i.e. a pseudorandom floating-point value
    between zero and one.
    @type jitter: 0-argument callable returning L{float}
    @return: a 1-argument callable that, given an attempt count, returns a
    floating point number; the number of seconds to delay.
    @rtype: see L{ClientService.__init__}\s C{retryPolicy} argument.
    """
    def policy(attempt):
        return (min((initialDelay * (factor ** attempt)), maxDelay) + jitter())
    return policy