random_grouping

Crates.iorandom_grouping
lib.rsrandom_grouping
version0.4.2
created_at2023-07-05 22:39:20.145138+00
updated_at2025-07-14 10:34:33.780606+00
descriptionUtility for random grouping.
homepage
repositoryhttps://github.com/nossie531/random_grouping
max_upload_size
id909438
size53,147
(nossie531)

documentation

README

random_grouping

Utility for random grouping.

The author of this crate is not good at English.
Forgive me if the document is hard to read.

What is this?

This is useful for grouping multiple items into some groups at random.

Examples

let mut rg = RandomGrouping::new();
let samples = (0..10).collect::<Vec<_>>();
let ratios = [0.3, 0.3, 0.2];

let result = rg.divide_by_ratio(&samples, &ratios);

assert!(result.len() == ratios.len());
for i in 0..result.len() {
    let group_size = (ratios[i] * samples.len() as f64).floor() as usize;
    assert!(result[i].len() == group_size);
    assert!(result[i].iter().all(|x| samples.contains(x)));
}

Versions

See CHANGELOG.

Commit count: 8

cargo fmt