【问题标题】:How to get Random Number [duplicate]如何获得随机数[重复]
【发布时间】:2010-11-19 15:36:14
【问题描述】:

我想得到 20 个 1 到 100 之间的随机数,但数字不应该重复....

更新: 如果我有 20 个名字,其中任何 5 个要随机选择,但名字来过一次就不能再叫了.....

【问题讨论】:

  • 这不是随机的。随机序列确实有重复的数字。你能澄清一下吗?
  • 它不是随机的,但它对某些事情仍然有用(例如,随机播放专辑中的歌曲而没有任何重复)。
  • 你想要一个随机的随机播放,谷歌费希尔-耶茨。
  • 最好称之为“大部分随机”
  • 给你:4,19,50,3,10,99,7,12,71,28,17,49,83,75,44,37,96,30,15, 42

标签: c# .net random


【解决方案1】:

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

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;
});

这可能是最简单的解决方法,但并不是最有效的。删除列表中的项目涉及移动以下项目。使用更多代码可以避免这种移动,但对于大多数用途而言,代码已经足够好了。

【讨论】:

    【解决方案2】:

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

    Unique Random Numbers

    我认为选择的答案很棒。

    【讨论】:

      猜你喜欢
      • 2015-06-12
      • 2010-12-19
      • 1970-01-01
      • 2015-12-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-23
      • 2011-12-26
      相关资源
      最近更新 更多