我有一个列表,可以有一个可变数量的项目(但不超过30个,所以没有性能问题),我想获得最多10个随机项目,我写了一段代码,列表中有10多个项目。下面的代码的问题是,如果列表中少于10个项目并且如果少于10个项目我想以随机顺序显示它们,它显然不会随机化结果。如何从列表中获得最多10个随机项目?
var keyPersons = people.ToList();
Random rnd = new Random();
while (keyPersons.Count() > 10)
{
int j = rnd.Next(0, keyPersons.Count());
keyPersons.RemoveAt(j);
}
rptKeyPersons.DataSource = keyPersons;
如果在人员列表中只有5个项目,我该如何随机化结果?
在此先感谢。
您的代码将删除随机点的物品,直到剩下10个物品。如果您的项目少于10个,那么您最终只会列出已有的列表。那么问题是什么?你需要一个随机*订购*?在任何一种情况下,我都可能只是将名单洗牌并拿出前10项,显然允许少于10项可能存在,根据你的规则听起来很好。 – 2012-02-13 04:24:54
是啊对不起,我更新了一些问题,如果有少于10我想他们都在随机顺序。 – user997685 2012-02-13 04:25:58
用于洗牌列表:http://stackoverflow.com/questions/273313/randomize-a-listt-in-c-sharp – mshsayem 2012-02-13 04:30:13