7 个版本
0.0.7 | 2024年5月4日 |
---|---|
0.0.6 | 2024年3月10日 |
0.0.5 | 2023年12月26日 |
0.0.4 | 2023年5月11日 |
0.0.1 | 2023年2月5日 |
#229 in 编码
4,988 个月下载量
在 13 个crate中(8个直接) 使用
83KB
730 行
随机(VRD)
基于梅森旋转算法生成高质量随机数的Rust库。
Mini Functions 库系列的一部分。
• 网站 • 文档 • 报告错误 • 请求功能 • 贡献指南
概述 📖
Random (VRD)
是一个基于梅森旋转算法生成高质量随机数的Rust库。
此库中的 Random
结构体提供了一个强大的接口,用于使用梅森旋转算法生成各种随机数。此外,MersenneTwisterConfig
结构体允许对算法进行高级配置。
Random (VRD) 使用梅森旋转算法生成随机数。它从任何 0..(2^32 - 1) 范围内的奇数种子开始生成 0..(2^32 - 1) 范围内的均匀分布的伪随机整数。
每次生成随机数后,索引增加。当索引达到 624 时,数组重新初始化,索引重置为 0。
特性 ✨
- 创建新的随机数生成器并使用一个值对其进行初始化
- 针对速度和效率设计
- 生成给定范围内的随机32位无符号整数
- 提供不同类型的随机数,包括布尔值、字节、字符、双精度浮点数、浮点数、整数和无符号整数
- 修改随机数生成器的状态
- 生成不同的伪随机数序列
- 调节生成的随机数的随机性,包括种子值和使用的位数
- 从值切片中选择随机元素
- 生成各种概率分布的随机数,包括均匀分布、正态分布、指数分布和泊松分布
入门 🚀
使用 Random (VRD)
仅需几分钟即可入门。
安装
要安装 Random (VRD)
,您需要在您的计算机上安装 Rust 工具链。您可以通过访问 Rust 网站 上的说明来安装 Rust 工具链。
安装 Rust 工具链后,您可以使用以下命令安装 Random (VRD)
:
cargo install vrd
将以下内容添加到您的 Cargo.toml
文件中
[dependencies]
vrd = "0.0.7"
serde = { version = "1.0.160", features = ["derive"] }
用法
use vrd::random::Random;
let mut rng = Random::new();
let rand_int = rng.int(1, 10);
println!("Random integer between 1 and 10: {}", rand_int);
let rand_float = rng.float();
println!("Random float: {}", rand_float);
let rand_bytes = rng.bytes(10);
println!("Random bytes: {:?}", rand_bytes);
示例
要开始使用 Random (VRD)
,您可以使用项目中 examples
目录中提供的示例。
要运行示例,克隆仓库,并在项目根目录下从终端运行以下命令。
cargo run --example vrd
宏 🦀
Random (VRD)
库提供了一组宏,简化了库的使用。这些宏提供了一种方便的方法来生成不同类型和分布的随机数。
以下是可用的宏:
rand_bool!(rng, probability)
:根据提供的概率生成一个随机布尔值。rand_bytes!(rng, length)
:生成指定长度的随机字节数组。rand_char!(rng)
:生成一个位于 'a'..='z' 范围内的随机字符。rand_choose!(rng, values)
:从值的切片中生成一个随机元素。rand_float!(rng)
:生成一个随机浮点数。rand_int!(rng, min, max)
:在给定的范围内生成一个随机整数。rand_uint!(rng, min, max)
:在给定的范围内生成一个随机的 32 位无符号整数。rand_double!(rng)
:生成一个随机双精度浮点数。rand_string!(rng, length)
:生成指定长度的随机字符串。rand_alphanumeric!(rng)
:生成一个随机字母数字字符。rand_shuffle!(rng, slice)
:随机打乱可变切片。rand_weighted_choice!(rng, choices, weights)
:根据提供的权重从切片中选择一个随机元素。rand_normal!(rng, mu, sigma)
: 使用给定的均值和标准差生成正态分布的随机数。rand_exponential!(rng, rate)
: 从给定速率参数的指数分布中生成随机数。rand_poisson!(rng, mean)
: 从指定均值参数的泊松分布中生成随机数。
有关如何使用这些宏的更多详细信息,请参阅文档。
平台支持
Random (VRD)
在以下平台上得到支持和测试
一级平台 🏆
操作系统 | 目标 | 描述 |
---|---|---|
Linux | aarch64-unknown-linux-gnu | ARM架构的64位Linux系统 |
Linux | i686-unknown-linux-gnu | 32位Linux(内核3.2+,glibc 2.17+) |
Linux | x86_64-unknown-linux-gnu | 64位Linux(内核2.6.32+,glibc 2.11+) |
macOS | x86_64-apple-darwin | 64位macOS(10.7 Lion或更高版本) |
Windows | i686-pc-windows-gnu | 32位Windows(7或更高版本) |
Windows | i686-pc-windows-msvc | 32位Windows(7或更高版本) |
Windows | x86_64-pc-windows-gnu | 64位Windows(7或更高版本) |
Windows | x86_64-pc-windows-msvc | 64位Windows(7或更高版本) |
二级平台 🥈
操作系统 | 目标 | 描述 |
---|---|---|
64位Linux | x86_64-unknown-linux-musl | 64位Linux(内核2.6.32+,musl libc) |
ARM64 Linux | aarch64-unknown-linux-musl | ARM架构的64位Linux系统 |
ARM64 macOS | aarch64-apple-darwin | 基于Apple硅的64位macOS |
ARM64 Windows | aarch64-pc-windows-msvc | 64位Windows(aarch64-pc-windows-msvc) |
ARMv6 Linux | arm-unknown-linux-gnueabi | ARMv6 Linux(内核3.2,glibc 2.17) |
ARMv6 Linux,硬浮点 | arm-unknown-linux-gnueabihf | ARMv7 Linux,硬浮点(内核3.2,glibc 2.17) |
ARMv7 Linux,硬浮点 | armv7-unknown-linux-gnueabihf | ARMv7 Linux,硬浮点(内核3.2,glibc 2.17) |
FreeBSD | x86_64-unknown-freebsd | 基于x86-64的64位FreeBSD |
MIPS (LE) Linux | mipsel-unknown-linux-gnu | MIPSel Linux(内核2.6.32+,glibc 2.11+) |
MIPS Linux | mips-unknown-linux-gnu | MIPS Linux(内核2.6.32+,glibc 2.11+) |
MIPS64 (LE) Linux | mips64el-unknown-linux-gnuabi64 | MIPS64el Linux(内核2.6.32+,glibc 2.11+) |
MIPS64 Linux | mips64-unknown-linux-gnuabi64 | MIPS64 Linux(内核2.6.32+,glibc 2.11+) |
NetBSD | x86_64-unknown-netbsd | 基于x86-64的64位NetBSD |
PowerPC Linux | powerpc-unknown-linux-gnu | PowerPC Linux(内核3.2,glibc 2.17) |
PPC64 Linux | powerpc64-unknown-linux-gnu | PowerPC64 Linux(内核3.2,glibc 2.17) |
PPC64LE Linux | powerpc64le-unknown-linux-gnu | PowerPC64le Linux(内核3.2,glibc 2.17) |
RISC-V Linux | riscv64gc-unknown-linux-gnu | RISC-V Linux(内核3.2,glibc 2.17) |
S390x Linux | s390x-unknown-linux-gnu | s390x Linux(内核3.2,glibc 2.17) |
GitHub Actions 显示了在哪些平台上运行 Random (VRD)
库的测试。
文档 📚
有关详细文档,请访问
语义版本策略 🚥
为了使我们的发布周期更加透明,并在努力保持向后兼容性的同时,《Random Random (VRD)遵循语义版本控制。
许可证 📝
本项目根据MIT许可证和Apache许可证(版本2.0)的条款进行授权。
贡献 🤝
我们欢迎所有想要贡献的人。请参阅贡献指南获取更多信息。
对本项目的任何形式的贡献(问题、拉取请求等)都必须遵守Rust的行为准则。
除非您明确表示相反,否则根据Apache-2.0许可证定义的,您有意提交并包含在本作品中的任何贡献,都将按照上述方式双重授权,不附加任何额外条款或条件。
致谢 💙
向所有为vrd做出贡献的杰出贡献者表示衷心的感谢,感谢他们的帮助和支持。
特别感谢Rust Reddit社区,他们提供了许多有用的建议,以改进本项目。
由Sébastien Rousseau用❤️制作
依赖
~7–15MB
~171K SLoC