#numbers #generator #generate #bits #bitcoin #truly

bitcoinleveldb-rand

一个非常简单的随机数生成器。在生成真正的随机比特方面并不特别出色,但适用于在 leveldb 中的基本使用

4 个版本

0.1.16-alpha.02023 年 3 月 31 日
0.1.13-alpha.02023 年 3 月 17 日
0.1.12-alpha.02023 年 1 月 19 日
0.1.10-alpha.02023 年 1 月 18 日

#137#bits

Download history 283/week @ 2024-03-30 147/week @ 2024-04-06 225/week @ 2024-04-13 181/week @ 2024-04-20 181/week @ 2024-04-27 175/week @ 2024-05-04 219/week @ 2024-05-11 138/week @ 2024-05-18 173/week @ 2024-05-25 179/week @ 2024-06-01 119/week @ 2024-06-08 155/week @ 2024-06-15 242/week @ 2024-06-22 43/week @ 2024-06-29 89/week @ 2024-07-06 228/week @ 2024-07-13

615 每月下载量
用于 116 个 crates (7 直接)

MIT 许可证

265KB
641

bitcoinleveldb-rand

这个 Rust 包是从 C++ 直接翻译到 Rust 的比特币核心随机数生成器实现。该包提供了生成随机数和实现各种随机数分布方案的功能。请注意,一些函数的实现可能仍在翻译过程中。

注意

该包是 C++ 到 Rust 直接翻译比特币核心的一部分。因此,一些函数的实现可能仍在翻译过程中。请注意,翻译完成后,该系统将可测试。

令牌

随机

Random 结构体用于生成随机数。它包含一个方法 next(),该方法返回一个随机数。

next

next() 方法生成一个随机数。

one_in

one_in(n: u32) 函数以概率 1/n 返回 true。

skewed

skewed(max_log: u32) 函数生成介于 02^max_log 之间的偏斜随机数。

uniform

uniform(max: u32) 函数生成介于 0max 之间的均匀随机数。

使用方法

要使用此包,请将 bitcoinleveldb-rand 添加到您的 Cargo.toml 文件中的依赖项

[dependencies]
bitcoinleveldb-rand = "0.1.0"

然后在您的 Rust 代码中导入该包

use bitcoinleveldb_rand::{Random, one_in, skewed, uniform};

fn main() {
    let mut random = Random::new();
    let random_number = random.next();

    if one_in(1000) {
        // do something with probability 1/1000
    }

    // generates a number between 0 and 1023 with
    // a skewed distribution
    let skewed_number = skewed(10); 

    // generates a number between 0 and 99 with
    // a uniform distribution
    let uniform_number = uniform(100); 
}

75> 在 leveldb 中如何使用随机数?

LevelDB在多个地方使用随机数。其中一个主要用途是在选择用于压缩的文件。在压缩过程中,LevelDB将多个SSTable合并成一个SSTable,随机数用于选择要合并的文件。这种随机化有助于确保数据均匀分布在SSTable中,并且SSTable的大小平衡,这可以提高性能。

随机数还用于基准测试和测试期间键和值的生成。这允许生成各种测试用例,有助于确保系统的健壮性和可靠性。此外,随机数还用于系统其他需要随机性的部分,例如选择块大小和压缩比率。

总的来说,LevelDB中使用随机数有助于确保系统能够处理各种数据和负载,并针对不同场景优化性能。

76> 谢谢——你能告诉我这个crate的接口吗?

bitcoinleveldb-rand crate提供了一个简单的随机数生成接口。该crate提供的主要类型是Random,它表示一个随机数源。以下是在Random上可用的方法:

  • new(seed: u64)使用给定的种子创建一个新的Random对象。

  • skewed(max_log: u32) -> u32返回一个介于0和2^max_log - 1之间的随机整数,偏向较小的数字。

  • uniform(max: u32) -> u32返回一个介于0和max - 1之间的随机整数,分布均匀。

  • one_in(n: u32) -> bool以1/n的概率返回true。

  • next() -> u32返回序列中的下一个随机数。

这些方法可用于在Leveldb系统中生成随机数,例如选择随机文件进行压缩或在测试期间生成键和值。

依赖关系

~88MB
~846K SLoC