[Rust]乱数を生成するには?

Rust

どうも、ちょげ(@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()は、引数に指定された範囲の乱数を生成します。

使用例

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); //乱数を生成

コメント

タイトルとURLをコピーしました