📅  最后修改于: 2023-12-03 14:47:10.557000             🧑  作者: Mango
在 Rust 中,可以使用标准库中的 rand
模块来生成随机数。该模块提供了多个随机数生成器,以及对随机数进行扩展、转换和操作的方法。
LCG 是一种使用数学运算生成随机数的算法。在 Rust 中,可以使用 LCG
类型生成随机数。使用 create_rng()
方法创建 LCG
类型实例,并使用 gen()
方法生成随机数。
use rand::Rng;
fn main() {
let mut rng = rand::thread_rng();
let random_number = rng.gen_range(1..101);
println!("Random number: {}", random_number);
}
在上面的示例中,我们使用 thread_rng()
方法创建了一个新的随机数生成器,并使用 gen_range()
方法生成了一个范围在 1 到 100 之间的随机数。
XorShift 算法是一种快速的伪随机数生成算法,在 Rust 中,可以使用 XorShiftRng
类型生成随机数。与 LCG
类型一样,可以使用 create_rng()
方法创建 XorShiftRng
类型实例,并使用 gen()
方法生成随机数。
use rand::Rng;
fn main() {
let mut rng = rand::XorShiftRng::create_rng();
let random_number = rng.gen_range(1..101);
println!("Random number: {}", random_number);
}
在上面的示例中,我们使用 create_rng()
方法创建一个新的 XorShiftRng
类型的随机数生成器,并使用 gen_range()
方法生成了一个范围在 1 到 100 之间的随机数。
梅森旋转算法是一种广泛使用的随机数生成算法,在 Rust 中,可以使用 StdRng
类型生成随机数。与 LCG
类型和 XorShiftRng
类型类似,可以使用 create_rng()
方法创建 StdRng
类型实例,并使用 gen()
方法生成随机数。
use rand::Rng;
fn main() {
let mut rng = rand::StdRng::create_rng();
let random_number = rng.gen_range(1..101);
println!("Random number: {}", random_number);
}
在上面的示例中,我们使用 create_rng()
方法创建一个新的 StdRng
类型的随机数生成器,并使用 gen_range()
方法生成了一个范围在 1 到 100 之间的随机数。
除了生成随机数以外,rand
模块还可以生成随机字节。例如,可以使用 fill()
方法将随机的字节填充到指定的缓冲区中。
use rand::Rng;
fn main() {
let mut rng = rand::thread_rng();
let mut buffer = vec![0; 10];
rng.fill(&mut buffer[..]);
println!("Random bytes: {:?}", buffer);
}
在上面的示例中,我们使用 thread_rng()
方法创建一个新的随机数生成器,并使用 fill()
方法将 10 个随机字节填充到 buffer
缓冲区中。
除了生成随机数以外,rand
模块还支持将随机数从一种类型转换为另一种类型。例如,可以使用 gen_bool()
方法将生成的随机数转换为布尔值。
use rand::Rng;
fn main() {
let mut rng = rand::thread_rng();
let random_bool = rng.gen_bool(0.5);
println!("Random bool: {}", random_bool);
}
在上面的示例中,我们使用 thread_rng()
方法创建一个新的随机数生成器,并使用 gen_bool()
方法将生成的随机数转换为布尔值。
通过本文,我们了解了 Rust 中的随机数生成器以及如何使用随机数生成器生成随机数、随机字节、转换并操作随机数的方法。
生成器:LCG
、XorShiftRng
、StdRng
方法:gen()
, gen_range()
, fill()
, gen_bool()
示例程序:rand_example.rs