jitter.go 529 B

1234567891011121314151617
  1. package missinggo
  2. import (
  3. "math/rand"
  4. "time"
  5. )
  6. // Returns random duration in the range [average-plusMinus,
  7. // average+plusMinus]. Negative plusMinus will likely panic. Be aware that if
  8. // plusMinus >= average, you may get a zero or negative Duration. The
  9. // distribution function is unspecified, in case I find a more appropriate one
  10. // in the future.
  11. func JitterDuration(average, plusMinus time.Duration) (ret time.Duration) {
  12. ret = average - plusMinus
  13. ret += time.Duration(rand.Int63n(2*int64(plusMinus) + 1))
  14. return
  15. }