| 713 | } |
| 714 | |
| 715 | std::chrono::microseconds GetExponentialRand(std::chrono::microseconds now, std::chrono::seconds average_interval) |
| 716 | { |
| 717 | double unscaled = -std::log1p(GetRand(uint64_t{1} << 48) * -0.0000000000000035527136788 /* -1/2^48 */); |
| 718 | return now + std::chrono::duration_cast<std::chrono::microseconds>(unscaled * average_interval + 0.5us); |
| 719 | } |
no test coverage detected