#random #grouping #rand

random_grouping

Utility for random grouping

7 releases

0.3.1 Jan 14, 2024
0.3.0 Oct 30, 2023
0.2.3 Sep 9, 2023
0.2.2 Jul 30, 2023
0.1.0 Jul 5, 2023

#3 in #grouping

46 downloads per month

MIT/Apache

18KB
283 lines

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)));
}

What's New

v0.3.1

  • Minor refactoring.

v0.3.0

  • must_use annotations are added at RandomGrouping.

v0.2.3

  • Bug fix: Remove unwanted Debug output.

v0.2.0

  • The default value of stable has been changed to true from false.
  • The first argument of divide_by_size and divide_by_ratio is changed to IntoIterator from slice.
  • Instead, divide_slice_by_size and divide_slice_by_ratio are introduced (which are faster for slices).

Dependencies

~350KB