3 个版本
0.1.2 | 2022年3月28日 |
---|---|
0.1.1 | 2021年9月18日 |
0.1.0 | 2021年9月18日 |
2519 在 算法 中
每月61 次下载
在 6 个crate中使用(通过 rdst)
8KB
107 行
block-pseudorand
此crate允许多线程创建任意长度的伪随机 Vec<T>
。它通过随机生成任意字节的向量并将其转换为提供的类型来实现。
警告:对于某些类型,这是非常不安全的,因为它不保持您类型可能期望的任何不变性。仅当您的类型可以从完全任意的字节安全生成时,才使用此crate。通常,这意味着您的类型应仅由原始数字(如u32、i64或f32)组成。
注意
- 生成数据不保证是密码安全的
- 如果提供种子,输出可以是确定性的
- 对于某些类型,这是非常不安全的,请参见上面的警告
用例
如果您需要快速生成大量随机数,用于非生产环境的关键测试等非关键任务,这可能是一个不错的选择。否则,如果您计划在运行时使用此功能,或使用非数字类型或其他不能从任意字节创建的类型,我建议您选择其他更安全的crate。
使用方法
如果您确定上述警告不适用于您要生成的类型,您可以使用此库如下
无种子
use block_pseudorand::block_rand;
let random_data: Vec<u64> = block_rand(128);
assert_eq!(random_data.len(), 128);
有种子
use block_pseudorand::block_rand_with_seed;
// Populate this seed as you wish
let seed = [0u8; 32];
let random_data: Vec<u64> = block_rand_with_seed(128, &seed);
assert_eq!(random_data.len(), 128);
依赖关系
~1.5MB
~26K SLoC