[C#]特定の範囲の小数(Double)の乱数を取得するには?

C#

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

特定の範囲の小数(Double)の乱数を生成する方法を紹介します。

スポンサーリンク

方法

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

特定の範囲の小数(Double)の乱数を取得するには、RandomのNextDouble()を使います。

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

Random rnd = new Random();

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

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

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

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

上記の演算は、演算に使用した最小値から最大値までの範囲の小数の乱数を取得します。

以下は、関数にした場合の例です。

public static double GetRandomDouble(Random rnd, int min, int max)
{
    return 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(rnd.NextDouble(1, 10));
        }
    }
}

public static class RandomExtensions
{
    public static double NextDouble(this Random rnd, double min, double max)
    {
        return rnd.NextDouble() * (max - min) + min;
    }
}

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

コメント

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