4个版本
0.1.3 | 2023年5月19日 |
---|---|
0.1.2 | 2023年5月18日 |
0.1.1 | 2023年5月14日 |
0.1.0 | 2023年5月14日 |
在算法中排名1124
每月下载量43
22KB
408 行
libgdx-xs128
Java库libgdx中RandomXS128的极简复制。实现受到sts_map_oracle的启发。单元测试在Java中生成。
功能
- 使用128位Xorshift算法生成伪随机数。
- (进行中):在
new_rng
模块上强制执行no_panic
- (如有请求):实现
RngCore
和SeedableRng
特性,以兼容使用相同特性的其他Rust库。
使用kani
进行模型检查
我们使用kani
模型检查器验证模块old_rng
和new_rng
的部分等价性(Github, 网站, crates.io, lib.rs)。这有助于我们将new_rng
重构为始终编译而不会出现单个panic
。
无panic的进展
graph LR;
classDef Complete stroke:#27ae60,stroke-width:2px;
classDef Incomplete stroke:#f39c12,stroke-width:2px;
Green[green means cannot panic]:::Complete --required for--> Orange[orange means may panic]:::Incomplete;
From_u64_u64:::Incomplete;
new:::Incomplete;
From_SeedInitializer:::Incomplete;
murmur_hash3:::Incomplete;
inverse_murmur_hash3:::Incomplete;
shr_33:::Incomplete;
wrapping_const_mul:::Incomplete;
From_i64:::Incomplete;
new --i64 as u64--> From_i64;
From_SeedInitializer --Seed--> new;
From_u64_u64 --SeedPair--> From_SeedInitializer;
murmur_hash3 --Seed & Seed0--> From_SeedInitializer;
inverse_murmur_hash3 --Seed1--> From_SeedInitializer;
shr_33 --> murmur_hash3;
shr_33 --> inverse_murmur_hash3;
wrapping_const_mul --> murmur_hash3;
wrapping_const_mul --> inverse_murmur_hash3;
next_u64:::Incomplete;
overflowing_next_capped_u64:::Incomplete;
advance:::Incomplete;
unchecked_next_capped_u64:::Incomplete;
next_capped_u64:::Incomplete;
next_u64 --> overflowing_next_capped_u64;
next_u64 --> advance;
overflowing_next_capped_u64 --> unchecked_next_capped_u64;
overflowing_next_capped_u64 --> next_capped_u64;
许可证
双许可,以兼容Rust项目。
根据您的选择,在Apache许可证,版本2.0或MIT许可证下授权。此文件可能不按照这些条款进行复制、修改或分发。