【问题标题】:Given an array of string what is the simplest way to sort them randomly?给定一个字符串数组,对它们进行随机排序的最简单方法是什么?
【发布时间】:2011-06-17 22:48:47
【问题描述】:

我想出的是:

RandomSort()
{
  string[] list = { "Alpha", "Beta", "Gamma", ... }
  Random rnd = new Random();
  string[] list2 = list.OrderBy((x) => rnd.NextDouble()).ToArray();
}

还有其他方法,也许使用Dictionary 或其他方式?谢谢。

【问题讨论】:

  • this question 的精确副本,其中最佳答案实际上不是公认的答案,而是 this one,它具有用于 Fisher-Yates Shuffle aka Knuth Shuffle 实现的 C# 代码。
  • 我搜索了随机排序,但没有出现。感谢您的链接。
  • 请注意,如果您洗牌的目的是为了制作一副纸牌来玩在线扑克,那么这不是足够随机的。 “随机”只是伪随机;给定一个伪随机洗牌的小样本,预测所有其他牌的顺序是一个简单的练习。如果您需要真正不可预测的随机性,请使用更好的随机性算法,例如加密算法。

标签: c# sorting random shuffle


【解决方案1】:

这当然很简单,但它是 O(n log(n))。使用Fisher Yates shuffle 可以提高性能。

【讨论】:

    猜你喜欢
    • 2014-01-03
    • 2010-09-12
    • 2019-08-17
    • 2021-08-06
    • 2011-12-09
    • 2012-03-05
    • 2015-04-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多