如何从两个不同的范围生成随机数?

例如:10-20 和 50-60 之间的一个数字。

我知道如何从一个范围(1-13)中生成一个随机数:

Random rnd = new Random();
int num = rnd.Next(1, 13);

最佳答案

int num = rnd.Next(1, 3)==1 ? rnd.Next(10, 21) : rnd.Next(50,61);

或者
int num = rnd.Next(10, 32);
if (num>20) num+=29;

或者只是为了好玩(不要在大范围内使用,无论如何运行速度都很慢):
var ranges=new []{ Tuple.Create(10,20), Tuple.Create(50,60)};
var rnd=new Random();
var possible=ranges.Select(x=>Enumerable.Range(x.Item1,x.Item2-x.Item1+1))
  .SelectMany(x=>x)
  .Distinct();
var num=possible.Skip(rnd.Next(0,possible.Count())).First();

关于c# - 从 2 个不同范围生成随机数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33681387/

10-12 21:40