Rust で乱数の生成
注意: クレートのバージョンが違うと、関数も異なります。
依存するクレートを追加
rand
に依存するので追加します。
cargo add rand
一様乱数を生成するプログラムの例
use rand::Rng;
fn main(){
let mut rng = rand::thread_rng();
// 浮動小数点数
let r: f64 = rng.gen_range(0.0..10000.0);
println!("{}", r);
// 整数
let r: i32 = rng.gen_range(0..10000);
println!("{}", r);
}
$ cargo run
Finished dev [unoptimized + debuginfo] target(s) in 0.00s
Running `target/debug/test`
9464.07133934519
9606
正規乱数を生成するプログラムの例
use rand::Rng;
fn main(){
let mut rng = rand::thread_rng();
let r: f64 = rng.gen();
println!("{}", r);
}
$ cargo run
Compiling alg2opt v0.1.0 (/home/hikari/2-opt/alg2opt)
Finished dev [unoptimized + debuginfo] target(s) in 0.26s
Running `target/debug/test`
0.34703657185118175
指定した分布に従う乱数
use rand::Rng;
use rand::distributions::Uniform;
fn main(){
let mut rng = rand::thread_rng();
let r: f64 = rng.sample(Uniform::new(10.0, 15.0));
println!("{}", r);
}
$ cargo run
Compiling alg2opt v0.1.0 (/home/hikari/2-opt/alg2opt)
Finished dev [unoptimized + debuginfo] target(s) in 0.26s
Running `target/debug/test`
12.13344856630783
参考
https://docs.rs/rand/0.8.5/rand/trait.Rng.html