どうも、ちょげ(@chogetarou)です。
乱数を生成する方法を紹介します。
方法

乱数を生成乱数を生成する方法は、2つあります。
範囲指定なしで生成
ひとつは、範囲指定なしで生成する方法です。
まず、必要なモジュールを導入します。
use rand::Rng;
次に、rand::thread_rng()を呼び出し、乱数ジェネレーターを生成します。
乱数ジェネレーターからgen()を呼び出します。
また、gen()を呼び出す際、乱数の型を指定します。
//呼び出す際に乱数の型を指定する場合
//T=乱数の型
let mut rnd = rand::thread_rng(); //乱数ジェネレーターを生成
let num = rnd.gen::<T>() //乱数を生成
//変数で型を指定する場合
//T=乱数の型
let mut rnd = rand::thread_rng();
let num: T = rnd.gen();
上記のgen()は、指定された型を元に乱数を生成します。
使用例
use rand::Rng;
fn main(){
let mut rnd = rand::thread_rng();
for _ in 0..5 {
let num: u8 = rnd.gen();
println!("{:?}", num);
}
}
出力:
47
251
71
239
217
使用例2
use rand::Rng;
fn main(){
let mut rnd = rand::thread_rng();
for _ in 0..5 {
println!("{:?}", rnd.gen::<i32>());
}
}
出力:
-2007315026
1396479170
-1438769437
-1983528806
-50585957
範囲指定ありで生成
もうひとつは、範囲指定ありで乱数を生成する方法です。
まず、必要なモジュールをインポートします。
use rand::Rng;
次に、rand::thread_rng()を呼び出し、乱数ジェネレーターを生成します。
乱数ジェネレーターからgen_range()を呼び出します。
そして、gen_range()の引数に乱数の範囲を指定します。
//range=乱数の範囲, T=乱数の型
let mut rnd = rand::thread_rng(); //乱数ジェネレータを生成
let num: T = rnd.gen_range(range); //乱数を生成
上記のgen_range()は、引数に指定された範囲の乱数を生成します。
Generate Random Values - Rust Cookbook
Collection of useful Rust code examples
Rng in rand - Rust
An automatically-implemented extension trait on providing high-level generic methods for sampling values and other conve...
使用例
use rand::Rng;
fn main(){
let mut rnd = rand::thread_rng();
for _ in 0..5 {
let num: u8 = rnd.gen_range(0..10);
println!("{:?}", num);
}
}
出力:
4
7
2
2
5
まとめ
乱数を生成する方法は、次の2つです。
- 範囲指定なしで乱数を生成する方法
let mut rnd = rand::thread_rng(); //乱数ジェネレーターを生成
let num = rnd.gen::<T>() //乱数を生成
let mut rnd = rand::thread_rng();
let num: T = rnd.gen();
- 範囲指定ありで乱数を生成する方法
let mut rnd = rand::thread_rng(); //乱数ジェネレータを生成
let num: T = rnd.gen_range(range); //乱数を生成
コメント