pub fn random_subset<T: Clone, R: Rng>(
set: &[T],
n: usize,
rng: &mut R,
) -> Vec<T>Expand description
Select a random subset of up to n elements from a slice.
If n >= set.len(), returns at most set.len() elements (a shuffled
subset). Returns an empty vector when the set is empty or n is zero.
ยงExamples
use tensor4all_tcicore::matrix::random_subset;
use rand::SeedableRng;
let mut rng = rand::rngs::StdRng::seed_from_u64(42);
let items = vec![10, 20, 30, 40, 50];
let sub = random_subset(&items, 3, &mut rng);
assert_eq!(sub.len(), 3);
// All selected elements come from the original set
for &x in &sub {
assert!(items.contains(&x));
}
// Requesting more than available returns at most set.len()
let all = random_subset(&items, 100, &mut rng);
assert_eq!(all.len(), 5);