随机排列列表<object> </object>

时间:2012-07-23 11:36:57

标签: c# list shuffle

我有一个我要随机排列或混淆的对象列表。这可能吗? 该列表由公司产品构成。我占据了每家公司的前2名,并将其余的添加到另一个名单中。我想混淆第二个清单。

感谢您的帮助

3 个答案:

答案 0 :(得分:5)

试试这个:

var rnd = new Random();
var shuffledList = list.OrderBy(x => rnd.Next()).ToList();

这很好用,因为OrderBy实现首先创建一个键列表,然后使用生成的键进行排序。因此lamba表达式仅针对每个项目调用一次。在排序过程中,列表中的每个项目都有自己的随机排序键。

答案 1 :(得分:1)

您不需要O(N * LogN)操作。只需使用FisherYatesShuffle

即可

另请参阅:http://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle

答案 2 :(得分:1)

尝试NBuilder - 它会构建对象列表,并为属性提供恶意生成的值(您也可以手动提供任何值):

var products = Builder<Product>.CreateListOfSize(10).Build();

如果您想要(非增量)随机项,您可以从任何集合中选择它们:

var randomProducts = Pick<Product>.UniqueRandomList(3).From(products);