[C#]RandomのNextDouble()で特定の範囲の小数を生成するには?

C#

どうも、ちょげ(@chogetarou)です。

RandomクラスのNextDouble()で特定の範囲の小数を取得する方法を紹介します。

スポンサーリンク

方法

インターフェース, インターネット, プログラム, ブラウザ, Www

RandomクラスのNextDouble()で特定の範囲の小数を取得するには、演算子を使います。

まず、Randomクラスのインスタンスを用意します。

Random rnd = new Random();

用意したRandomクラスのインスタンスからNextDouble()を呼び出します。

NextDouble()の戻り値に、(最大値 – 最小値)を掛けます。

そして、上記の掛け算から最小値を引きます。

//max=最大値、min=最小値
rnd.NextDouble() * (max - min) + min;

上記の演算は、演算に使用した最小値から最大値までの範囲のランダムな小数を返します。

使用例

using System;
public class Example
{
    public static void Main()
    {
        Random rnd = new Random();
        
        for (var i = 0; i < 5; i++)
        {
            Console.WriteLine(GetRandomDouble(rnd, 1, 10));
        }
    }

    public static double GetRandomDouble(Random rnd, int min, int max)
    {
        return rnd.NextDouble() * (max - min) + min;
    }
}

/*
    出力:
    9.18778855734868
    1.01173636597196
    3.44305823112049
    5.14005933289419
    1.85856840054438
*/

コメント

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