代码之家  ›  专栏  ›  技术社区  ›  Javed Akram

如何获得随机数[重复]

  •  0
  • Javed Akram  · 技术社区  · 14 年前

    我想得到20个介于1到100之间的随机数,但是这个数不应该重复……

    更新时间: 如果我有20个名字,其中任意5个名字将被一个接一个地随机选择,但这个名字一次又不被调用了……

    2 回复  |  直到 14 年前
        1
  •  5
  •   Community CDub    8 年前

    大约一年前我问过这个问题。

    Unique Random Numbers

    我想,选定的答案很好。

        2
  •  7
  •   Guffa    14 年前

    将数字放入列表中,然后从列表中选择:

    List<int> numbers = Enumerable.Range(1, 100).ToList();
    
    Random rnd = new Random();
    List<int> picks = Enumerable.Range(1, 20).Select(n => {
      int index = rnd.Next(numbers.Count);
      int pick = numbers[index];
      numbers.RemoveAt(index);
      return pick;
    });
    

    这可能是解决问题最简单的方法,但不是最有效的方法。删除列表中的项目涉及移动以下项目。有了更多的代码,您就可以避免这种移动,但在大多数情况下,代码已经足够好了。