【发布时间】:2010-11-09 02:34:21
【问题描述】:
我尝试使用任一代码改组字节列表(列表):
myList.Sort((a, b) => this._Rnd.Next(-1, 1));
或
myList.Sort(delegate(byte b1, byte b2)
{
return this._Rnd.Next(-1, 1);
});
他们抛出了以下错误:
无法排序,因为 IComparer.Compare() 方法返回不一致的结果。一个值与自身比较不相等,或者一个值与另一个值重复比较会产生不同的结果。 x:“{0}”,x 的类型:“{1}”,IComparer:“{2}”。
使用随机而不是字节的比较函数有什么问题?
我尝试使用 LINQ 函数,它可以工作。
var myNewList = myList.OrderBy(s => Guid.NewGuid());
var myNewList = myList.OrderBy(s => this._Rnd.NextDouble());
我确实读到这些方法比仅给出 O(n) 运行时间的 Fisher-Yates shuffle 慢。但只是想知道使用排序功能和随机。
【问题讨论】:
标签: c# linq list sorting random