0

0 から 100 の間で 12 の倍数のランダムな int を作成するにはどうすればよいですか?

int RndInt = GetRandomInt(0, 100);
4

4 に答える 4

6
var rng = new Random();

int rndInt = rng.Next(0, 9) * 12;

の排他的な上限をrng.Next(min, max)使用することに注意してください。max

またRandom()、数ミリ秒ごとにのみ更新されるリアルタイム クロックの現在の時刻からシードされることに注意してください。そのため、単一の Random オブジェクトを作成して再利用する必要があります。間違った結果が得られるため、タイトなループで作成し続けないでください。

0一般に、との間の乱数Nを のステップ サイズで生成する場合S:

  1. 整数除算を使用して取得できる最大ステップ数を計算します。M = N/S;
  2. 0 から M までの乱数を計算します。
  3. その乱数にステップ サイズを掛けます。

あなたの場合:

S = 12
N = 100
M = 100/12 = 8

0 から M までの乱数を生成するには、 を使用できますRandom.Next(0, M+1)。の排他的な値が期待される+1ため、 が必要であることに注意してください。Random.Next()max

于 2013-06-12T12:47:46.377 に答える
0

Random次のようなクラスとRandom.Nextメソッドを使用できます。

Random r = new Random();
int i = r.Next(9) * 12;
Console.WriteLine(i);

ここに がありDEMOます。

説明として、 fromをr.Next(9)返します( notを含みます)。int0909

于 2013-06-12T12:52:55.373 に答える
0

ファンジーのためだけに:

int ret = 0;
while ( (ret=rnd.Next(0,100))%12 != 0 ) ;
return ret;
于 2013-06-12T12:53:46.467 に答える