#random-number #entropy #rand

bin+lib vrd

基于梅森旋转算法生成随机数和伪随机数的Rust库

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 编码

Download history 1520/week @ 2024-04-27 1797/week @ 2024-05-04 1244/week @ 2024-05-11 1167/week @ 2024-05-18 850/week @ 2024-05-25 807/week @ 2024-06-01 938/week @ 2024-06-08 1164/week @ 2024-06-15 1022/week @ 2024-06-22 577/week @ 2024-06-29 1017/week @ 2024-07-06 1162/week @ 2024-07-13 1075/week @ 2024-07-20 1270/week @ 2024-07-27 1116/week @ 2024-08-03 1382/week @ 2024-08-10

4,988 个月下载量
13 个crate中(8个直接) 使用

MIT/Apache

83KB
730

Random (VRD) logo

随机(VRD)

基于梅森旋转算法生成高质量随机数的Rust库。

Mini Functions 库系列的一部分。

Random (VRD) Banner

Made With Rust Crates.io Lib.rs Docs.rs License Codecov

网站文档报告错误请求功能贡献指南

divider

概述 📖

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