使用基于构造函数中的结构 RNG 成员的随机值初始化结构的向量



我有一个结构,它有自己的RNG(随机数生成器(作为成员,还有一个带有随机值的向量。我可以用一个随机种子初始化这个结构的RNG,然后在用基于该种子的随机数填充向量后直接初始化吗?

use rand::{rngs::SmallRng, SeedableRng};
struct Example {
values: Vec<f64>,
rng: SmallRng,
}
impl Example {
pub fn new(random_seed: Option<u64>) -> Self {
Task {
rng: SmallRng::seed_from_u64(random_seed.unwrap_or_default()),
values: vec![ ??? rng.gen() ??? ; 10], // this does not work.
}
}
}

有没有一种变通方法,或者一种惯用的方法来做这些事情?

正如L.Riemer所指出的,我可以首先初始化成员变量,然后在初始化时在结构中"移动"它们:

impl Example {
pub fn new(
random_seed: Option<u64>,
) -> Self {
let mut rng = SmallRng::seed_from_u64(random_seed.unwrap_or_default());
let values = vec![rng.gen_range(-1.0..1.0); 10];
Task {
rng: rng,
values: values,
}
}
}

最新更新