7

可能重复:
在 C# 中随机化一个 List<T>
随机播放(随机重新排列)一个 List<string>
随机绘图算法

嗨,我有以下列表,我想将其输出model到列表中,但这样做是随机的。我看过一些例子,但它们似乎真的很令人困惑。我只是想要一个简单的方法来做到这一点?

List<Car> garage ----randomise------> List<string> models


List<Car> garage = new List<Car>();

garage.Add(new Car("Citroen", "AX"));
garage.Add(new Car("Peugeot", "205"));
garage.Add(new Car("Volkswagen", "Golf"));
garage.Add(new Car("BMW", "320"));
garage.Add(new Car("Mercedes", "CLK"));
garage.Add(new Car("Audi", "A4"));
garage.Add(new Car("Ford", "Fiesta"));
garage.Add(new Car("Mini", "Cooper"));
4

2 回答 2

12

我想你想要的就是这个,这是一种简单的方法;

Random rand = new Random();
var models = garage.OrderBy(c => rand.Next()).Select(c => c.Model).ToList();

//模型假设这是您的属性的名称

注意:具有讽刺意味的是,Random() 实际上并不是很随机,但对于快速简单的解决方案来说很好。有更好的算法可以做到这一点,这里有一个;

http://en.wikipedia.org/wiki/Fisher-Yates_shuffle

于 2012-08-29T14:17:39.243 回答
-1

我已经看到这个 pre-LINQ 的一些混乱代码,但是 LINQ 方式看起来很干净。

也许试一试?

http://www.ookii.org/post/randomizing_a_list_with_linq.aspx

Random rnd = new Random();
var randomizedList = from item in list
                     orderby rnd.Next()
                     select item;
于 2012-08-29T14:18:50.600 回答