【发布时间】:2015-12-25 13:04:17
【问题描述】:
我有时使用OrderBy (item => R.NextDouble()) 对列表或数组进行洗牌,其中Random R 在其他地方初始化。
现在这显然是一种 hack,尽管在本网站的所有地方都推荐了这种方法,并且在实践中效果非常好。
但是,也有人指出,这是假设排序算法不会因更改单个项目的值而混淆,例如进入无限循环。
我的问题是,是否有某种隐含或明确的保证不会发生这种情况。我在 MSDN 中找不到任何关于它的信息。
虽然为此目的有非常好的、专门的 O(n) 算法,但我并不总是想在小项目中搜索和复制粘贴它们(我们在这里不是在谈论 prod)。他们显然是正确的解决方案。
请注意,性能根本不是问题。此外,不需要良好或安全的随机性(在这种情况下必须使用加密库) - 这只是稍微整理一下。
【问题讨论】:
-
这不是stackoverflow.com/questions/1287567 的骗子,因为这个问题是关于方法的持续运行(即不会循环或崩溃)。