0

我将如何制作一个随机整数,即介于 0 和 100 之间以及 12 的倍数?

int RndInt = GetRandomInt(0, 100);
4

4 回答 4

7

生成一个介于 0 和 8 之间的随机整数并将其乘以 12。

于 2013-06-12T12:48:08.547 回答
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.

作为解释,r.Next(9)返回intfrom 0to 9(包括0not 9)。

于 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 回答