From d90317576cfd0364be23c28a93dc97f0b30f09fc Mon Sep 17 00:00:00 2001 From: lisyarus Date: Fri, 24 Feb 2023 22:57:03 +0300 Subject: [PATCH] Add exponential random distribution --- .../include/psemek/random/exponential.hpp | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 libs/random/include/psemek/random/exponential.hpp diff --git a/libs/random/include/psemek/random/exponential.hpp b/libs/random/include/psemek/random/exponential.hpp new file mode 100644 index 00000000..612f822f --- /dev/null +++ b/libs/random/include/psemek/random/exponential.hpp @@ -0,0 +1,28 @@ +#pragma once + +#include + +#include + +namespace psemek::random +{ + + template + struct exponential_distribution + { + exponential_distribution(T lambda) + : lambda_(lambda) + {} + + template + T operator()(RNG & rng) + { + T const y = uniform(rng); + return - std::log(1 - y) / lambda_; + } + + private: + T lambda_; + }; + +}