我正在Rust中使用rgsl
库,该库包装C GSL数学库中的函数。我使用的是随机数生成器函数,但每当我生成一个新的随机数时,我总是得到相同的确切值。我想这个数字应该在函数的每次运行中都会有所不同。有什么我失踪了吗?每次都需要设置一个新的随机种子吗?Rust GSL库始终为随机数生成器返回相同的数字
extern crate rgsl;
use rgsl::Rng;
fn main() {
rgsl::RngType::env_setup();
let t = rgsl::rng::default();
let r = Rng::new(&t).unwrap()
let val = rgsl::randist::binomial::binomial(&r, 0.01f64, 1u32);
print!("{}",val);
}
我一直得到的值是1
,这似乎真的很高考虑获得1
的概率0.01.
谢谢你的注意。我想它是使用相同的种子。所以我仔细看了一下文档,有一件事情让人困惑。因此,如果我想生成一系列新的随机数,那么我需要每次更改种子。但是,如果我使用rng生成一组随机种子,那么每次都会得到相同的种子。所以我永远无法摆脱伪随机生成器的确定性一面。其他语言似乎没有这个限制,这意味着种子可以根据需要手动设置,但是否则是随机的。 Rust中没有办法做到这一点吗? – krishnab
哦,谢谢@Shepmaster。是的,我必须使用rgsl箱子,因为它具有生成二项式随机变量的功能。不过这真的很有帮助。我现在知道这是如何工作的。 – krishnab