相关疑难解决方法(0)

为什么人们说使用随机数发生器时存在模偏差?

我已经看到这个问题了很多但从未见过真正的具体答案.所以我将在这里发布一个,希望能帮助人们理解为什么在使用随机数生成器时会出现"模数偏差",就像rand()在C++中一样.

c++ language-agnostic random modulo

270
推荐指数
6
解决办法
4万
查看次数

有没有办法将随机数生成器存储为特征对象?

有没有办法在 Rust 中保存通用随机数生成器?我想要一种编写通用代码的方法,例如:

use rand::Rng; // 0.7.2

fn main() {
    // Purely random numbers on the interval 0 to 1
    println!("Pure random");
    let mut rng: Box<dyn rand::Rng> = Box::new(rand::thread_rng());
    for i in 0..10 {
        println!("{}", rng.gen::<f64>());
    }
    println!("");

    // On a seed
    *rng = rand::SeedableRng::seed_from_u64(0);
    for i in 0..10 {
        println!("{}", rng.gen::<f64>());
    }
    println!("");
}
Run Code Online (Sandbox Code Playgroud)

该变量rng使用种子或其他方式保存不同类型的随机数生成器。然而,这段代码存在很多错误,例如:

use rand::Rng; // 0.7.2

fn main() {
    // Purely random numbers on the interval 0 to 1
    println!("Pure random");
    let mut rng: …
Run Code Online (Sandbox Code Playgroud)

traits rust trait-objects

3
推荐指数
1
解决办法
1479
查看次数

如何填充具有预定容量的向量?

我正在尝试使用一个矢量初始化后填充一个矢量,with_capacity()因为在创建矢量之前已知元素的数量,并且使用它似乎更有效。

以下代码不会使用随机值AT ALL填充:println!("{}", v.len());输出零。

use rand::Rng;

fn main() {
    const NUMBER_OF_RANDOM_NUMBERS: usize = 10;

    let mut v = Vec::with_capacity(NUMBER_OF_RANDOM_NUMBERS);

    for i in &mut v {
        *i += rand::thread_rng().gen_range(1, 2^32);
    }

    println!("{}", v.len());
}
Run Code Online (Sandbox Code Playgroud)

我的想法是,在let mut v = Vec::with_capacity(NUMBER_OF_RANDOM_NUMBERS)使用10个零初始化一个崭新的向量之后,然后使用rand::thread_rng().gen_range(1, 2^32)插入,或者我应该说,向每个零添加一个随机数。

我在这里想念什么吗?

rust

2
推荐指数
1
解决办法
92
查看次数

标签 统计

rust ×2

c++ ×1

language-agnostic ×1

modulo ×1

random ×1

trait-objects ×1

traits ×1