0 から 100 の間で 12 の倍数のランダムな int を作成するにはどうすればよいですか?
int RndInt = GetRandomInt(0, 100);
var rng = new Random();
int rndInt = rng.Next(0, 9) * 12;
の排他的な上限をrng.Next(min, max)
使用することに注意してください。max
またRandom()
、数ミリ秒ごとにのみ更新されるリアルタイム クロックの現在の時刻からシードされることに注意してください。そのため、単一の Random オブジェクトを作成して再利用する必要があります。間違った結果が得られるため、タイトなループで作成し続けないでください。
0
一般に、との間の乱数N
を のステップ サイズで生成する場合S
:
M = N/S;
あなたの場合:
S = 12
N = 100
M = 100/12 = 8
0 から M までの乱数を生成するには、 を使用できますRandom.Next(0, M+1)
。の排他的な値が期待される+1
ため、 が必要であることに注意してください。Random.Next()
max
Random
次のようなクラスとRandom.Next
メソッドを使用できます。
Random r = new Random();
int i = r.Next(9) * 12;
Console.WriteLine(i);
ここに がありDEMO
ます。
説明として、 fromをr.Next(9)
返します( notを含みます)。int
0
9
0
9
ファンジーのためだけに:
int ret = 0;
while ( (ret=rnd.Next(0,100))%12 != 0 ) ;
return ret;