#random #unity

unity-random

Unity伪随机数生成器的重新实现

1 个稳定版本

1.0.0 2024年8月22日

#7#unity

MIT 许可证

19KB
290

Unity-Random

github crates.io docs.rs

基于Xorshift128算法的Unity PRNG的完整重新实现。

结果应接近Unity,除了 color() 可能由于.NET版本在5.x之前的问题而产生略微不准确的结果。

与Unity不同,它不提供静态类。

注意:如果您期望使用密码学安全的PRNG,则不应使用此库。如果您只想生成随机数,应考虑Randcrate。

此项目与Unity Technologies无关。

用法

use unity_random::Random;
let mut random = Random::new();
random.init_state(220824); // set the PRNG seed

let integer = random.range_int(0, 100);
let float = random.range_float(0., 1.);
let rotation = random.rotation_uniform();

您还可以保存/加载当前状态

use unity_random::Random;
let mut random = Random::new();
random.init_state(220824);

// You can save the current state...
let saved_state = random.state;

// then generate random numbers...
let i1 = random.range_int(0, 100);

// and load the state again...
random.state = saved_state;

// ... to generate the same sequence
let i2 = random.range_int(0, 100);
assert_eq!(i1, i2);

功能标志

  • serde: 启用PRNG的 State 的序列化和反序列化。

依赖关系

~165KB