5 个版本 (3 个稳定版)

1.0.2 2020 年 12 月 27 日
1.0.1 2020 年 2 月 29 日
1.0.0 2020 年 2 月 18 日
0.1.1 2020 年 2 月 16 日
0.1.0 2020 年 2 月 16 日

#885 in 算法

Download history 129/week @ 2024-03-15 342/week @ 2024-03-22 379/week @ 2024-03-29 500/week @ 2024-04-05 318/week @ 2024-04-12 577/week @ 2024-04-19 328/week @ 2024-04-26 305/week @ 2024-05-03 260/week @ 2024-05-10 199/week @ 2024-05-17 368/week @ 2024-05-24 457/week @ 2024-05-31 169/week @ 2024-06-07 244/week @ 2024-06-14 583/week @ 2024-06-21 114/week @ 2024-06-28

每月 1,183 次下载

BSD-3-Clause

725KB
383

sobol

Crates.io documentation minimum rustc 1.33 Rust Coverage Status License

A Sobol 序列生成器用于 Rust

此软件包提供了 Sobol 低差异准随机序列,这些序列对于积分和其他任务非常有用。该序列可以用最少的几个点均匀地覆盖一个区域,并随着点的增加而逐渐填充空间。

为了提高效率,sobol 采用了 Antonov-Saleev 提出的灰码优化的递归变体。

以下是分别从 Sobol 和均匀生成器生成的二维点的示例。请在此处查看动画可视化here

Sobol Uniform

用法

cargo install sobol

打印 3 维序列的前 100 个点

extern crate sobol;
  
use sobol::Sobol;
use sobol::params::JoeKuoD6;

fn main() {
    let params = JoeKuoD6::minimal();
    let seq = Sobol::<f32>::new(3, &params);
    
    for point in seq.take(100) {
        println!("{:?}", point);
    }
}

在此示例中,序列的每个组件都是 32 位浮点数,但 sobol 也支持 Rust 的其他数值原语。浮点数序列跨越单位超立方体(即 [0,1)),而整数值序列跨越所选类型的自然域。例如,u16 类型的序列将在 0 到 65,536 之间。

初始化值

提供支持高达 21,201 维的初始化值(即“参数”),由 Stephen Joe 和 Frances Kuo 提供(source),可通过 sobol::params::JoeKuoD6 访问。可以通过实现 sobol::SobolParams 特性使用自定义初始化值。

如果将其导入到项目中,提供的 JoeKuoD6 参数将自动嵌入到项目的二进制文件中。为了减少添加到项目中的数据量,JoeKuoD6 提供了三个在其他方面相同的参数集,可以根据所需的序列维度进行选择

来源 支持的维度 近似大小
JoeKuoD6::最小() 100 1kb
JoeKuoD6::标准() 1,000 20kb
JoeKuoD6::扩展() 21,201 690kb

另请参阅

  • lobos - 用于 Scala 和 JavaScript 的 Sobol 序列生成器

参考文献

许可证

除非另有说明,本仓库中的一切内容均遵循 BSD 许可协议。

sobol-rs(c)2020 威斯顿·西格恩特勒

依赖项