# Struct rand_distr::Exp1

source · `pub struct Exp1;`

## Expand description

Samples floating-point numbers according to the exponential distribution,
with rate parameter `λ = 1`

. This is equivalent to `Exp::new(1.0)`

or
sampling with `-rng.gen::<f64>().ln()`

, but faster.

See `Exp`

for the general exponential distribution.

Implemented via the ZIGNOR variant^{1} of the Ziggurat method. The exact
description in the paper was adjusted to use tables for the exponential
distribution rather than normal.

## §Example

```
use rand::prelude::*;
use rand_distr::Exp1;
let val: f64 = thread_rng().sample(Exp1);
println!("{}", val);
```

Jurgen A. Doornik (2005).

*An Improved Ziggurat Method to Generate Normal Random Samples*. Nuffield College, Oxford ↩

## Trait Implementations§

source§### impl<'de> Deserialize<'de> for Exp1

### impl<'de> Deserialize<'de> for Exp1

source§#### fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,

#### fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more

source§### impl Distribution<f32> for Exp1

### impl Distribution<f32> for Exp1

source§### impl Distribution<f64> for Exp1

### impl Distribution<f64> for Exp1

### impl Copy for Exp1

## Auto Trait Implementations§

### impl Freeze for Exp1

### impl RefUnwindSafe for Exp1

### impl Send for Exp1

### impl Sync for Exp1

### impl Unpin for Exp1

### impl UnwindSafe for Exp1

## Blanket Implementations§

source§### impl<T> BorrowMut<T> for Twhere
T: ?Sized,

### impl<T> BorrowMut<T> for Twhere
T: ?Sized,

source§#### fn borrow_mut(&mut self) -> &mut T

#### fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more