From 9e64d69bf74c8a381fb59841519cc3736bce14d4 Mon Sep 17 00:00:00 2001 From: John Newbery Date: Tue, 14 Dec 2021 10:15:10 +0000 Subject: [move] Move PoissonNextSend to src/random and update comment PoissonNextSend is used by net and net_processing and is stateless, so place it in the utility random.cpp translation unit. --- src/random.cpp | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'src/random.cpp') diff --git a/src/random.cpp b/src/random.cpp index 6eb06c5d47..919061e61d 100644 --- a/src/random.cpp +++ b/src/random.cpp @@ -19,6 +19,7 @@ #include // for Mutex #include // for GetTimeMicros() +#include #include #include @@ -714,3 +715,9 @@ void RandomInit() ReportHardwareRand(); } + +std::chrono::microseconds PoissonNextSend(std::chrono::microseconds now, std::chrono::seconds average_interval) +{ + double unscaled = -log1p(GetRand(1ULL << 48) * -0.0000000000000035527136788 /* -1/2^48 */); + return now + std::chrono::duration_cast(unscaled * average_interval + 0.5us); +} -- cgit v1.2.3