Add exponential random distribution

This commit is contained in:
Nikita Lisitsa 2023-02-24 22:57:03 +03:00
parent 9b304ead00
commit d90317576c

View file

@ -0,0 +1,28 @@
#pragma once
#include <psemek/random/uniform.hpp>
#include <cmath>
namespace psemek::random
{
template <typename T>
struct exponential_distribution
{
exponential_distribution(T lambda)
: lambda_(lambda)
{}
template <typename RNG>
T operator()(RNG & rng)
{
T const y = uniform<T>(rng);
return - std::log(1 - y) / lambda_;
}
private:
T lambda_;
};
}