2个版本 (1个稳定版)
1.0.0 | 2022年8月4日 |
---|---|
0.1.0 | 2022年5月28日 |
#1972 在 算法
34KB
565 行
SHR3: 3位移位寄存器随机数生成器
SHR3生成器可以用来生成非加密随机位,计算量非常小。
它适用于运行在非常小且受限的硬件上(例如小的8位微控制器)。SHR3函数在提取每个随机位时评估一次。将SHR3状态的最低位提取为输出。
生成器的周期约为4_000_000_000
位。不要用它提取大量随机位(超过几百MiB),除非您能容忍随机流回起点。它将在2**32 - 1
次迭代后回环到起点。
此生成器不是密码学安全的!不要将其用于加密应用。
示例用法
use shr3::prelude::*;
let mut shr3 = Shr3::new(); // SHR3 with default seed (1).
let x: u8 = shr3.get(); // Extract 8 bits from shr3.
let y: u16 = shr3.get_bits(10); // Extract 10 bits from shr3 and store in lower bits of y.
assert_eq!(x, 0xF8); // Extracted random value.
assert_eq!(y, 0x2CC); // Extracted random value.
let mut shr3 = Shr3::new_state(42); // SHR3 with custom seed (42).
let mut shr3: Shr3 = Default::default(); // Alternative to Shr::new().
示例Cargo.toml依赖项
将此内容添加到您的Cargo.toml
[dependencies]
shr3 = "1"
no_std
此crate不需要Rust std库。它不链接到std。
优化实现
此crate包括AVR 8位的优化实现。
所有其他架构使用通用实现。在大多数架构上,此通用实现将被编译为相当高效的代码。
许可证
版权(c)2022 Michael Buesch [email protected]
根据您的选择,许可在Apache License版本2.0或MIT许可证下。