【问题标题】:Get all the number between two numbers random随机获取两个数字之间的所有数字
【发布时间】:2014-06-09 03:59:34
【问题描述】:

我不确定,如果这个问题是独一无二的,但我找不到答案。

我想要一种在 C# 中随机获取 1 到 9(包括 9)之间的数字的好方法,并且我想要所有 9 个数字。所以我需要一个返回 1 到 9 之间的 9 个数字的函数,并且我需要每个数字恰好一次。

例如,结果如下所示: 4,3,2,6,9,7,1,5,8

【问题讨论】:

  • 谷歌fisher yates shuffle
  • 我假设您没有找到重复项,因为您不知道您想要的内容被称为“随机播放”。如果您使用该标签查找问题,您会发现很多 :)

标签: c# random shuffle


【解决方案1】:

给你:

public void Shuffle(List<int> list)
{
    Random random = new Random();
    for (int i = 0; i < list.Count; i++)
    {
        int k = random.Next(i + 1);
        int val = list[k];
        list[k] = list[i];
        list[i] = val;
    }
}

用法:

List<int> list = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
Shuffle(list);

【讨论】:

    【解决方案2】:

    我会这样做:

    var rnd = new Random();
    
    var numbers =
        Enumerable
            .Range(1, 9)
            .OrderBy(x => rnd.Next())
            .ToArray();
    

    我得到的一个示例结果是:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-11-13
      • 1970-01-01
      • 2012-04-25
      • 1970-01-01
      • 1970-01-01
      • 2011-04-27
      • 2015-01-31
      相关资源
      最近更新 更多