从数组中采样 N 个元素的函数
Function to sample N elements from array
假设我们有一个数组:
let arr: [u8; 10] = [1,2,3,4,5,6,7,8,9,10];
Rust 中是否有一个函数可以从中选择 N
个随机元素而不重复?等同于 python 的 random.sample
函数。
您可以使用 sample
获取索引样本,然后迭代并从原始数组中获取:
use rand::prelude::*;
use rand::seq::index::sample;
fn main() {
let mut rng = rand::thread_rng();
let arr: [u8; 10] = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
let sample: Vec<u8> = sample(&mut rng, arr.len(), 3)
.iter()
.map(|i| arr[i])
.collect();
}
您可以使用 choose_multiple
:
use rand::prelude::*;
fn main() {
let mut rng = rand::thread_rng();
let arr: [u8; 10] = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
let sample: Vec<_> = arr.choose_multiple (&mut rng, 3).collect();
println!("{:?}", sample);
}
假设我们有一个数组:
let arr: [u8; 10] = [1,2,3,4,5,6,7,8,9,10];
Rust 中是否有一个函数可以从中选择 N
个随机元素而不重复?等同于 python 的 random.sample
函数。
您可以使用 sample
获取索引样本,然后迭代并从原始数组中获取:
use rand::prelude::*;
use rand::seq::index::sample;
fn main() {
let mut rng = rand::thread_rng();
let arr: [u8; 10] = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
let sample: Vec<u8> = sample(&mut rng, arr.len(), 3)
.iter()
.map(|i| arr[i])
.collect();
}
您可以使用 choose_multiple
:
use rand::prelude::*;
fn main() {
let mut rng = rand::thread_rng();
let arr: [u8; 10] = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
let sample: Vec<_> = arr.choose_multiple (&mut rng, 3).collect();
println!("{:?}", sample);
}