C# 0到100之间的随机整数和12的倍数

C# 0到100之间的随机整数和12的倍数,c#,C#,我该如何做一个随机整数,介于0到100之间,是12的倍数 int RndInt = GetRandomInt(0, 100); 请注意,rng.Nextmin,max使用max的唯一上界 还请注意,Random是从实时时钟的当前时间开始播种的,实时时钟每几毫秒更新一次,因此您应该创建一个Random对象并重用它;不要总是在一个紧密的循环中创建一个,因为它会给你错误的结果 通常,如果要生成步长为S的0到N之间的随机数: 使用整数除法计算可以得到的最大步数:M=N/S; 计算一个介于0和M(含)之

我该如何做一个随机整数,介于0到100之间,是12的倍数

int RndInt = GetRandomInt(0, 100);
请注意,rng.Nextmin,max使用max的唯一上界

还请注意,Random是从实时时钟的当前时间开始播种的,实时时钟每几毫秒更新一次,因此您应该创建一个Random对象并重用它;不要总是在一个紧密的循环中创建一个,因为它会给你错误的结果

通常,如果要生成步长为S的0到N之间的随机数:

使用整数除法计算可以得到的最大步数:M=N/S; 计算一个介于0和M(含)之间的随机数。 将该随机数乘以步长。 就你而言:

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

要生成0到M(含0和M)之间的随机数,可以使用random.Next0,M+1。请注意所需的+1,因为Random.Next预期最大值为独占值。

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

您可以使用类似的类和方法

Random r = new Random();
int i = r.Next(9) * 12;
Console.WriteLine(i);
这是一本书

作为解释,r.Next9返回从0到9的整数,包括0而不是9。

仅用于娱乐:

int ret = 0;
while ( (ret=rnd.Next(0,100))%12 != 0 ) ;
return ret;

GetIntRandom0,8*12为什么有人对此投反对票?我猜是因为你没有发布任何实际的代码。像这样简单的事情,我觉得还是让这个家伙自己想办法好。简单地复制/粘贴代码对他没有帮助这是一个完全合理的答案。你可以使用rng.Next9,但是+1记住上限是唯一的:-@DanPuzey哦,是的,你是对的,出于某种原因,我总是使用带有两个参数的版本。。。我习惯了理论上,循环可以永远运行。也许很有趣,但毫无用处。@Stijn如果Random是一个实际的随机数生成器,它可能会发生。@p.s.w.g一个真正的随机数生成器并不存在,总是至少需要一个输入参数。除非随机尝试达到均匀分布,否则这是可能的。@Stijn我只是说它是一个LCG-PRNG,所以它保证在它的周期内至少命中0到99之间的每个数字一次。@p.s.w.g.Afaik C使用减法PRNG-它是一种LCG吗?
int ret = 0;
while ( (ret=rnd.Next(0,100))%12 != 0 ) ;
return ret;