【问题标题】:C# Shuffle a list of strings [closed]C#随机播放字符串列表[关闭]
【发布时间】:2013-11-23 05:09:24
【问题描述】:

我是 C# 的新手,我想在我的字符串列表中打乱,所以没有输入两次值,所有值都被打乱。 到目前为止我有这个代码

private List<string> myCards = List<string> 
{
    "AC", "AS", "AD", "AH",
    "2C", "2S", "2D", "2H",
    "3C", "3S", "3D", "3H",
    "4C", "4S", "4D", "4H",
    "5C", "5S", "5D", "5H",
    "6C", "6S", "6D", "6H",
    "7C", "7S", "7D", "7H",
    "8C", "8S", "8D", "8H",
    "9C", "9S", "9D", "9H",
    "10C", "10S", "10D", "10H", 
    "KC", "KS", "KD", "KH",
    "QC", "QS", "QD", "QH",
    "JC", "JS", "JD", "JH"
};

干杯

【问题讨论】:

  • 您需要做一些研究(例如搜索 SO)。然后写一些代码,当你有具体问题时回来
  • 到目前为止,您的代码只是一个列表...不足以提出问题。
  • 又名:你没有代码。这就像在你的考试上写下你的名字,然后期待你的老师给你打分。从字面上看,它需要 1 行 +- 20 个字符来完成您想要的操作。谷歌,它已经在 SO 上得到了很多回答。
  • This link 可能对你有用
  • 使用 Fisher-Yates 洗牌。这是code

标签: c# arrays list shuffle


【解决方案1】:

您要删除重复项并随机播放吗?

从 NuGet* 安装 Extended Random,导入 ExtendedRandomSystem.Linq,然后:

ExtendedRandom.Random.Shuffle(myCards.Distinct())

* 我是那个 NuGet 包的维护者

【讨论】:

    【解决方案2】:

    你可以做一些简单的事情,比如使用 linq 随机排序。

    var shuffled = myCards.Distinct().OrderBy(x =>  System.Guid.NewGuid().ToString()).ToList();
    

    将其实现为方法也很简单。

    public List<string> Shuffle(List<string> items)
    {
      return items.Distinct().OrderBy(x =>  System.Guid.NewGuid().ToString()).ToList();
    }
    

    【讨论】:

      猜你喜欢
      • 2020-11-23
      • 2017-08-16
      • 1970-01-01
      • 2017-04-11
      • 2011-12-10
      • 1970-01-01
      • 2016-04-28
      • 1970-01-01
      • 2023-01-23
      相关资源
      最近更新 更多