# ランダムな int を生成
この例では、0 から 2147483647 までのランダムな値を生成します。
Random rnd = new Random();
int randomNumber = rnd.Next();
# 指定された範囲でランダムな int を生成します
minValue
の間の乱数を生成します そして maxValue - 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 つの Random クラスは、同じシード値を持ちます。
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());
これにより、すべての Random
の結果を制御することも可能になります rndSeeds
のシード値のみを設定することによるインスタンス .他のすべてのインスタンスは、その単一のシード値から決定論的に導出されます。
# ランダム double を生成
0 から 1.0 の間の乱数を生成します。 (1.0 を含まない)
Random rnd = new Random();
var randomDouble = rnd.NextDouble();
# ランダムな文字を生成
a
の間のランダムな文字を生成します と z
Next()
を使用して 指定された範囲の数値をオーバーロードし、結果の int
を変換します char
に
Random rnd = new Random();
char randomChar = (char)rnd.Next('a','z');
//'a' and 'z' are interpreted as ints for parameters for Next()
# 最大値のパーセンテージである数値を生成します
X%
の数値を生成するための乱数の一般的な必要性 いくつかの最大値の。これは、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.
# 構文
# パラメータ
パラメータ | 詳細th> |
---|---|
種 | 乱数を生成するための値。設定されていない場合、デフォルト値は現在のシステム時間によって決定されます。 |
最小値 | 生成される数値は、この値よりも小さくなりません。設定されていない場合、デフォルト値は 0 です。 |
最大値 | 生成される数値は、この値よりも小さくなります。設定されていない場合、デフォルト値は Int32.MaxValue です . |
戻り値 | ランダムな値で数値を返します。 |
# コメント
システムによって生成されたランダム シードは、実行ごとに同じではありません。
同じ時期に生成された種は同じかもしれません。