种子的可能类型/值是什么

  • 本文关键字:是什么 类型 种子 rust
  • 更新时间 :
  • 英文 :


SeedableRng有一个示例,但没有解释种子是什么。 搜索Seed类型不提供详细信息。 在 GitHub 源目录中搜索也没有为我解决这个问题。

let seed: &[_] = &[1, 2, 3, 4];
let mut rng: StdRng = SeedableRng::from_seed(seed);

seed必须是整数的四元素数组吗? 为什么?还能是别的吗?

Seed可以是特征的实现者决定的任何类型,它是定义为特征本身一部分的泛型类型:

pub trait SeedableRng<Seed>: Rng {
//                    ^^^^
    fn reseed(&mut self, _: Seed);
    fn from_seed(seed: Seed) -> Self;
}

Isaac64Rng使用一片u64

impl<'a> SeedableRng<&'a [u64]> for Isaac64Rng
//                   ^^^^^^^^^

XorShiftRng正好使用 4 个u32

impl SeedableRng<[u32; 4]> for XorShiftRng
//               ^^^^^^^^

您可以在 rand crate 的文档中看到 SeedableRng 的所有实现者:

impl<S, R: SeedableRng<S>, Rsdr: Reseeder<R> + Default> SeedableRng<(Rsdr, S)> for ReseedingRng<R, Rsdr>
impl<'a> SeedableRng<&'a [u32]> for ChaChaRng
impl<'a> SeedableRng<&'a [u32]> for IsaacRng
impl<'a> SeedableRng<&'a [u64]> for Isaac64Rng
impl SeedableRng<[u32; 4]> for XorShiftRng
impl<'a> SeedableRng<&'a [usize]> for StdRng

其他板条箱也可以定义具有不同种子类型的随机数生成器。

最新更新