pub struct Gamma { /* private fields */ }
Expand description
The Gamma distribution Gamma(shape, scale)
distribution.
The density function of this distribution is
f(x) = x^(k - 1) * exp(-x / θ) / (Γ(k) * θ^k)
where Γ
is the Gamma function, k
is the shape and θ
is the
scale and both k
and θ
are strictly positive.
The algorithm used is that described by Marsaglia & Tsang 2000[1],
falling back to directly sampling from an Exponential for shape == 1
, and using the boosting technique described in [1] for
shape < 1
.
Example
use sgx_rand::distributions::{IndependentSample, Gamma};
let gamma = Gamma::new(2.0, 5.0);
let v = gamma.ind_sample(&mut sgx_rand::thread_rng());
println!("{} is from a Gamma(2, 5) distribution", v);
[1]: George Marsaglia and Wai Wan Tsang. 2000. “A Simple Method for Generating Gamma Variables” ACM Trans. Math. Softw. 26, 3 (September 2000), 363-372. DOI:10.1145/358407.358414
Implementations
Trait Implementations
sourceimpl IndependentSample<f64> for Gamma
impl IndependentSample<f64> for Gamma
sourcefn ind_sample<R: Rng>(&self, rng: &mut R) -> f64
fn ind_sample<R: Rng>(&self, rng: &mut R) -> f64
Generate a random value.
impl Copy for Gamma
Auto Trait Implementations
impl RefUnwindSafe for Gamma
impl Send for Gamma
impl Sync for Gamma
impl Unpin for Gamma
impl UnwindSafe for Gamma
Blanket Implementations
sourceimpl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more