# Struct rand_distr::Exp1

source · `pub struct Exp1;`

## Expand description

The standard exponential distribution `Exp(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.

## §Plot

The following plot illustrates the exponential distribution with `λ = 1`

.

## §Example

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

## §Notes

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.

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

source§### impl<T> CloneToUninit for Twhere
T: Clone,

### impl<T> CloneToUninit for Twhere
T: Clone,

source§#### default unsafe fn clone_to_uninit(&self, dst: *mut T)

#### default unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (

`clone_to_uninit`

)source§### impl<T> CloneToUninit for Twhere
T: Copy,

### impl<T> CloneToUninit for Twhere
T: Copy,

source§#### unsafe fn clone_to_uninit(&self, dst: *mut T)

#### unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (

`clone_to_uninit`

)