Function malachite_base::sets::random::random_hash_sets_from_length_iterator
source · pub fn random_hash_sets_from_length_iterator<T: Eq + Hash, I: Iterator<Item = u64>, J: Iterator<Item = T>>(
seed: Seed,
lengths_gen: &dyn Fn(Seed) -> I,
xs_gen: &dyn Fn(Seed) -> J
) -> RandomHashSets<T, I, J> ⓘ
Expand description
Generates random HashSet
s using elements from an iterator and with lengths from another
iterator.
The input iterator must generate at least many distinct elements as any number generated by the lengths iterator; otherwise, this iterator will hang.
$$ P((x_i)_{i=0}^{n-1}) = n!P(n)\prod_{i=0}^{n-1}P(x_i). $$
lengths
and xs
must be infinite.
Examples
#[macro_use]
extern crate maplit;
use itertools::Itertools;
use malachite_base::num::random::random_primitive_ints;
use malachite_base::random::EXAMPLE_SEED;
use malachite_base::sets::random::random_hash_sets_from_length_iterator;
use malachite_base::vecs::random_values_from_vec;
fn main() {
let xs = random_hash_sets_from_length_iterator(
EXAMPLE_SEED,
&|seed| random_values_from_vec(seed, vec![0, 2, 4]),
&random_primitive_ints::<u8>,
);
let values = xs.take(20).collect_vec();
assert_eq!(
values,
&[
hashset!{11, 85},
hashset!{134, 136, 200, 235},
hashset!{203, 223},
hashset!{38, 177, 217, 235},
hashset!{32, 162, 166, 234},
hashset!{30, 218},
hashset!{},
hashset!{90, 106},
hashset!{},
hashset!{9, 151, 204, 216},
hashset!{78, 97, 213, 253},
hashset!{39, 91},
hashset!{170, 175, 191, 232},
hashset!{2, 233},
hashset!{22, 35, 198, 217},
hashset!{17, 32, 114, 173},
hashset!{65, 114, 121, 222},
hashset!{},
hashset!{25, 144, 148, 173},
hashset!{}
]
);
}