#byte #random #byte-length #vec-t #generator #seed #generate

block-pseudorand

适用于可以从任意字节转换的类型,生成随机 Vec 的生成器

3 个版本

0.1.2 2022年3月28日
0.1.1 2021年9月18日
0.1.0 2021年9月18日

2519算法

Download history 7/week @ 2024-04-07 2/week @ 2024-04-14 6/week @ 2024-04-21 10/week @ 2024-04-28 1/week @ 2024-05-05 12/week @ 2024-05-12 23/week @ 2024-05-19 18/week @ 2024-05-26 17/week @ 2024-06-02 13/week @ 2024-06-09 21/week @ 2024-06-16 21/week @ 2024-06-23 4/week @ 2024-06-30 6/week @ 2024-07-07 19/week @ 2024-07-14 29/week @ 2024-07-21

每月61 次下载
6 个crate中使用(通过 rdst

Apache-2.0 OR MIT

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