サーチ…


構文

  • ランダム()

  • ランダム(intシード)

  • int Next()

  • int次へ(int maxValue)

  • int次へ(int minValue、int maxValue)

パラメーター

パラメーター詳細
シード乱数を生成するための値。設定されていない場合、デフォルト値は現在のシステム時刻によって決定されます。
minValue 生成される数値はこの値より小さくなりません。設定されていない場合、デフォルト値は0です。
maxValue 生成される数値はこの値より小さくなります。設定されていない場合、デフォルト値はInt32.MaxValueです。
戻り値ランダムな値を持つ数値を返します。

備考

システムによって生成されたランダムシードは、異なる実行ごとに同じではありません。

同じ時間に生成された種は同じかもしれません。

ランダムなintを生成する

この例では、0〜2147483647の間の乱数値を生成します。

Random rnd = new Random();
int randomNumber = rnd.Next();

ランダムなdoubleを生成する

0と1.0の間の乱数を生成します。 (1.0を含まない)

Random rnd = new Random();
var randomDouble = rnd.NextDouble();

指定された範囲にランダムなintを生成する

minValuemaxValue - 1間の乱数を生成します。

Random rnd = new Random();
var randomBetween10And20 = rnd.Next(10, 20);

乱数の同じシーケンスを繰り返し生成する

同じシードのRandomインスタンスを作成する場合、同じ番号が生成されます。

int seed = 5;
for (int i = 0; i < 2; i++)
{
   Console.WriteLine("Random instance " + i);
   Random rnd = new Random(seed);
   for (int j = 0; j < 5; j++)
   {
      Console.Write(rnd.Next());
      Console.Write(" ");
   }

   Console.WriteLine();
}

出力:

Random instance 0
726643700 610783965 564707973 1342984399 995276750
Random instance 1
726643700 610783965 564707973 1342984399 995276750

異なる種を持つ複数のランダムなクラスを同時に作成する

同時に作成された2つのランダムなクラスは、同じシード値を持ちます。

System.Guid.NewGuid().GetHashCode()を使用するSystem.Guid.NewGuid().GetHashCode()は同じ時間でも異なる種を得ることができます。

Random rnd1 = new Random();
Random rnd2 = new Random();
Console.WriteLine("First 5 random number in rnd1");
for (int i = 0; i < 5; i++)
    Console.WriteLine(rnd1.Next());

Console.WriteLine("First 5 random number in rnd2");
for (int i = 0; i < 5; i++)
    Console.WriteLine(rnd2.Next());

rnd1 = new Random(Guid.NewGuid().GetHashCode());
rnd2 = new Random(Guid.NewGuid().GetHashCode());
Console.WriteLine("First 5 random number in rnd1 using Guid");
for (int i = 0; i < 5; i++)
    Console.WriteLine(rnd1.Next());
Console.WriteLine("First 5 random number in rnd2 using Guid");
for (int i = 0; i < 5; i++)
    Console.WriteLine(rnd2.Next());

異なるシードを達成する別の方法は、別のRandomインスタンスを使用してシード値を取得することです。

Random rndSeeds = new Random();
Random rnd1 = new Random(rndSeeds.Next());
Random rnd2 = new Random(rndSeeds.Next());

これにより、 rndSeedsシード値だけを設定することによって、すべてのRandomインスタンスの結果を制御することも可能になります。他のすべてのインスタンスは、その単一のシード値から確定的に導出されます。

ランダムな文字を生成する

指定された範囲の数値に対してNext()オーバーロードを使用してaz間にランダムな文字を生成し、結果のintchar変換します

Random rnd = new Random();
char randomChar = (char)rnd.Next('a','z'); 
//'a' and 'z' are interpreted as ints for parameters for Next()

最大値のパーセンテージである数値を生成する

乱数の一般的な必要性は、いくつかの最大値のX%である数を生成することです。これは、 NextDouble()結果をパーセンテージとして扱うことでNextDouble()できます。

var rnd = new Random();
var maxValue = 5000;
var percentage = rnd.NextDouble();
var result = maxValue * percentage; 
//suppose NextDouble() returns .65, result will hold 65% of 5000: 3250.


Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow