随机随机播放列表

Pet*_*uch 7 c# random shuffle list

可能重复:
随机化C#
shuffle中的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"));
Run Code Online (Sandbox Code Playgroud)

saj*_*saj 12

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

Random rand = new Random();
var models = garage.OrderBy(c => rand.Next()).Select(c => c.Model).ToList();
Run Code Online (Sandbox Code Playgroud)

//模型假设这是你的财产的名称

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

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

  • [为什么在排序中使用Random导致[无法对IComparer.Compare错误进行排序](http://stackoverflow.com/questions/4129995/why-does-using-random-in-sort-causing-unable-to-sort- IComparer的 - 比较 - 错误) (2认同)
  • 它的复杂性也是"N*LogN",而它可以在"N"中完成 (2认同)
  • @PeterCrouch问题不是"真正的随机性".上面的代码可能**永远不会**运气不好:) (2认同)