# Struct rand_distr::Zipf

source · `pub struct Zipf<F>{ /* private fields */ }`

## Expand description

The Zipf (Zipfian) distribution `Zipf(n, s)`

.

The samples follow Zipf’s law:
The frequency of each sample from a finite set of size `n`

is inversely
proportional to a power of its frequency rank (with exponent `s`

).

For large `n`

, this converges to the `Zeta`

distribution.

For `s = 0`

, this becomes a `uniform`

distribution.

## §Plot

The following plot illustrates the Zipf distribution for `n = 10`

and
various values of `s`

.

## §Example

```
use rand::prelude::*;
use rand_distr::Zipf;
let val: f64 = thread_rng().sample(Zipf::new(10, 1.5).unwrap());
println!("{}", val);
```

## §Implementation details

Implemented via rejection sampling, due to Jason Crease1.

## Implementations§

## Trait Implementations§

source§### impl<F> Distribution<F> for Zipf<F>

### impl<F> Distribution<F> for Zipf<F>

### impl<F> Copy for Zipf<F>

### impl<F> StructuralPartialEq for Zipf<F>

## Auto Trait Implementations§

### impl<F> Freeze for Zipf<F>where
F: Freeze,

### impl<F> RefUnwindSafe for Zipf<F>where
F: RefUnwindSafe,

### impl<F> Send for Zipf<F>where
F: Send,

### impl<F> Sync for Zipf<F>where
F: Sync,

### impl<F> Unpin for Zipf<F>where
F: Unpin,

### impl<F> UnwindSafe for Zipf<F>where
F: UnwindSafe,

## 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§#### 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`

)