📅  最后修改于: 2023-12-03 15:34:46.849000             🧑  作者: Mango
在 Rust 中,我们可以使用标准库中的 rand
包来生成随机数。但是,如果我们想要在给定的范围内生成随机数,该怎么办呢?本文将向您展示如何在 Rust 中生成特定范围内的随机数。
要生成在给定的范围内的随机整数,我们可以使用 rand::Rng
trait 中的 gen_range
函数。该函数接受两个参数,表示随机数的范围,返回一个指定范围内的随机整数。以下是使用 gen_range
在 1 和 10 之间生成随机整数的示例:
use rand::Rng;
fn main() {
let mut rng = rand::thread_rng();
let random_number = rng.gen_range(1, 11);
println!("The random number is {}", random_number);
}
这里我们首先创建一个随机数生成器(generator)rng
,然后通过调用 gen_range(1, 11)
生成一个在 1 到 10 之间的随机数。需要注意的是,gen_range
生成的随机数是左闭右开(左边包含,右边不包含)区间。因此,我们传递的数字 11 并不会被包含在生成的随机数范围内。
如果我们要生成在特定范围内的随机浮点数,则可以使用 rand::Rng
trait 中的 gen_range
函数中的第二个参数,并将其转换为浮点数。以下是使用 gen_range
在 0 和 1 之间生成随机浮点数的示例:
use rand::Rng;
fn main() {
let mut rng = rand::thread_rng();
let random_float = rng.gen_range(0.0, 1.0);
println!("The random float is {}", random_float);
}
这里我们仍然使用了 gen_range
函数,但是将其第二个参数改为了浮点数,并在 0.0 和 1.0 之间生成了随机浮点数。
如果我们需要生成多个在给定范围内的随机数,我们可以使用迭代器和 gen_range
函数。以下是在 1 和 10 之间生成 5 个随机整数的示例:
use rand::Rng;
fn main() {
let mut rng = rand::thread_rng();
let random_numbers: Vec<i32> = (0..5).map(|_| rng.gen_range(1, 11)).collect();
println!("The random numbers are {:?}", random_numbers);
}
这里我们使用了一个计数器 (0..5)
的迭代器,并在每次迭代中生成一个 1 到 10 之间的随机数。最后,我们将这五个随机数统一存储在一个 Vec<i32>
向量中,并使用 {:?}
格式化符号打印出来。
本文介绍了如何在 Rust 中生成在给定范围内的随机数。我们使用了 rand::Rng
trait 中的 gen_range
函数,并通过示例代码说明了如何生成随机整数、随机浮点数和多个随机数。如果您想了解有关 Rust 随机数生成的更多信息,请查看 rust-random/rand。