17

1.41421との間のランダムな倍精度数を生成するための簡潔で最新の C# コードを探してい3.14159ます。数値は[0-9]{1}.[0-9]{5}フォーマットにする必要があります。

何らかの形で利用するソリューションがEnumerable.Rangeこれをより簡潔にするかもしれないと考えています。

4

7 に答える 7

34

2 つの値の間の乱数を返すメソッドを簡単に定義できます。

private static readonly Random random = new Random();

private static double RandomNumberBetween(double minValue, double maxValue)
{
    var next = random.NextDouble();

    return minValue + (next * (maxValue - minValue));
}

次に、目的の値を指定してこのメ​​ソッドを呼び出すことができます。

RandomNumberBetween(1.41421, 3.14159)
于 2013-07-22T11:55:31.093 に答える
10

このようなものを使用してください。

Random random = new Random()
int r = random.Next(141421, 314160); //+1 as end is excluded.
Double result = (Double)r / 100000.00;
于 2013-07-22T11:49:38.640 に答える
6
Random r = new Random();
var number = r.Next(141421, 314160) / 100000M;

また、10 進数をパターンに一致させることはできません。たとえば、番号がある場合、形式1.5と一致しません。1.50000したがって、結果を文字列としてフォーマットする必要があります。

string formattedNumber = number.ToString("0.00000");
于 2013-07-22T11:50:10.017 に答える
1

これを使いました。これが役立つことを願っています。

Random Rnd = new Random();

double RndNum = (double)(Rnd.Next(Convert.ToInt32(LatRandMin.Value), Convert.ToInt32(LatRandMax.Value)))/1000000;
于 2013-08-25T21:58:06.143 に答える
1

役立つ既製の実装については、次のリンクを確認してください。

MathNet.Numerics、乱数、および確率分布

System.Random から直接派生した乱数ジェネレーター (MersenneTwister など) の上に構築された広範なディストリビューションは特に興味深いものであり、すべて便利な拡張メソッド (NextFullRangeInt32、NextFullRangeInt64、NextDecimal など) を提供します。もちろん、デフォルトの SystemRandomSource をそのまま使用することもできます。これは、単純に System.Random を拡張メソッドで修飾したものです。

必要に応じて、RNG インスタンスをスレッド セーフとして作成することもできます。

とても便利です。

于 2014-02-05T01:29:27.720 に答える