在一个Rust项目中,我想根据一个整数种子生成reproducible个随机数,就像我在Java中习惯的那样.

rand个 crate 中Seed个的文件说明:

种子类型,它仅限于可作为u8数组进行可变解引用的类型(我们建议[u8;N]用于某些N).

这是否意味着整数种子是不可能的?如果可能的话,我如何使用StdRng和整数种子?

推荐答案

查看此功能:StdRng::seed_from_u64

它来自于StdRng实现的SeedableRngtrait .

例如:

let mut r = StdRng::seed_from_u64(42);

请注意,只要您在同一平台上使用相同的构建,这将为您提供可复制的随机数,但不保证StdRng的内部实现在平台和库的版本之间保持不变!如果平台和构建之间的再现性对你来说很重要,那么看看rand_chacharand_pcgrand_xoshiro等 crate .

Rust相关问答推荐

SQL x中的mut *transaction和mut transaction有什么区别?

关于如何初始化弱 struct 字段的语法问题

在Rust中显式装箱受生存期限制的转换闭包

重写Rust中的方法以使用`&;mut self`而不是`mut self`

带参考文献的 rust 元组解构

如何在递归数据 struct 中移动所有权时变异引用?

Pin<;&;mut可能将Uninit<;T>;>;合并为Pin<;&;mut T>;

Rust中WPARAM和VIRTUAL_KEY的比较

Rust 中多个 & 符号的内存表示

如何获取模块树?

pyO3 和 Panics

为什么不能在 Rust 中声明静态或常量 std::path::Path 对象?

Rust Serde 为 Option:: 创建反序列化器

使用自定义 struct 收集 Vec

如何将 Rust 字符串转换为 i8(c_char) 数组?

返回引用字符串的future

为什么指定生命周期让我返回一个引用?

有没有更好的方法来为拥有 DIsplay 事物集合的 struct 实现 Display?

为什么这个值在上次使用后没有下降?

如何制作具有关联类型的特征的类型擦除版本?