[][src]Struct rand::distributions::WeightedChoice

pub struct WeightedChoice<'a, T: 'a> { /* fields omitted */ }

A distribution that selects from a finite collection of weighted items.

Each item has an associated weight that influences how likely it is to be chosen: higher weight is more likely.

The Clone restriction is a limitation of the Distribution trait. Note that &T is (cheaply) Clone for all T, as is u32, so one can store references or indices into another vector.

Example

use rand::distributions::{Weighted, WeightedChoice, Distribution};

let mut items = vec!(Weighted { weight: 2, item: 'a' },
                     Weighted { weight: 4, item: 'b' },
                     Weighted { weight: 1, item: 'c' });
let wc = WeightedChoice::new(&mut items);
let mut rng = rand::thread_rng();
for _ in 0..16 {
     // on average prints 'a' 4 times, 'b' 8 and 'c' twice.
     println!("{}", wc.sample(&mut rng));
}

Methods

impl<'a, T: Clone> WeightedChoice<'a, T>
[src]

Create a new WeightedChoice.

Panics if:

  • items is empty
  • the total weight is 0
  • the total weight is larger than a u32 can contain.

Trait Implementations

impl<'a, T: Clone> Sample<T> for WeightedChoice<'a, T>
[src]

Deprecated since 0.5.0

: use Distribution instead

Generate a random value of Support, using rng as the source of randomness. Read more

impl<'a, T: Clone> IndependentSample<T> for WeightedChoice<'a, T>
[src]

Deprecated since 0.5.0

: use Distribution instead

Generate a random value.

impl<'a, T: Clone> Distribution<T> for WeightedChoice<'a, T>
[src]

Generate a random value of T, using rng as the source of randomness.

Important traits for DistIter<'a, D, R, T>

Create an iterator that generates random values of T, using rng as the source of randomness. Read more

impl<'a, T: Debug + 'a> Debug for WeightedChoice<'a, T>
[src]

Formats the value using the given formatter. Read more

Auto Trait Implementations

impl<'a, T> Send for WeightedChoice<'a, T> where
    T: Send

impl<'a, T> Sync for WeightedChoice<'a, T> where
    T: Sync

Blanket Implementations

impl<T, U> Into for T where
    U: From<T>, 
[src]

Performs the conversion.

impl<T> From for T
[src]

Performs the conversion.

impl<T, U> TryFrom for T where
    T: From<U>, 
[src]

🔬 This is a nightly-only experimental API. (try_from)

The type returned in the event of a conversion error.

🔬 This is a nightly-only experimental API. (try_from)

Performs the conversion.

impl<T> Borrow for T where
    T: ?Sized
[src]

Immutably borrows from an owned value. Read more

impl<T> BorrowMut for T where
    T: ?Sized
[src]

Mutably borrows from an owned value. Read more

impl<T, U> TryInto for T where
    U: TryFrom<T>, 
[src]

🔬 This is a nightly-only experimental API. (try_from)

The type returned in the event of a conversion error.

🔬 This is a nightly-only experimental API. (try_from)

Performs the conversion.

impl<T> Any for T where
    T: 'static + ?Sized
[src]

🔬 This is a nightly-only experimental API. (get_type_id)

this method will likely be replaced by an associated static

Gets the TypeId of self. Read more