pub fn random_b_tree_sets_fixed_length<I: Iterator>(
    len: u64,
    xs: I
) -> RandomBTreeSetsFixedLength<I>Notable traits for RandomBTreeSetsFixedLength<I>impl<I: Iterator> Iterator for RandomBTreeSetsFixedLength<I> where
    I::Item: Ord
type Item = BTreeSet<I::Item>;
where
    I::Item: Ord
Expand description

Randomly generates BTreeSets of a given length.

The input iterator must generate at least len distinct elements; otherwise, this iterator will hang.

$$ P((x_i)_{i=0}^{n-1}) = n!\prod_{i=0}^{n-1}P(x_i). $$

If len is 0, the output consists of the empty set, repeated.

xs must be infinite.

Examples

extern crate itertools;
#[macro_use]
extern crate maplit;

use itertools::Itertools;
use malachite_base::num::random::random_unsigned_inclusive_range;
use malachite_base::random::EXAMPLE_SEED;
use malachite_base::sets::random::random_b_tree_sets_fixed_length;

fn main() {
    let xss = random_b_tree_sets_fixed_length(
        2,
        random_unsigned_inclusive_range::<u32>(EXAMPLE_SEED, 1, 100),
    )
    .take(10)
    .collect_vec();
    assert_eq!(
        xss,
        &[
            btreeset!{24, 95},
            btreeset!{71, 99},
            btreeset!{53, 93},
            btreeset!{34, 85},
            btreeset!{2, 48},
            btreeset!{11, 55},
            btreeset!{18, 48},
            btreeset!{90, 93},
            btreeset!{67, 93},
            btreeset!{93, 95}
        ]
    );
}