我有以下代码:
private Random r = new Random();
private List<T> RandomElement<T>(IQueryable<T> list, Expression<Func<T, bool>> e, int items = 3)
{
list = list.Where(e);
return list.Skip(r.Next(list.Count())).Take(items).ToList();
}
问题是当我打电话给它并希望例如从列表中返回3个随机项时,有时返回3有时2,有时1?
我希望在任何时候都能得到3。
我做错了什么?
答案 0 :(得分:0)
如果您的列表中有10个元素,并且您要求3个“随机”项目,则在您的解决方案中,如果随机数生成器返回8,则跳过前8个元素并且它只有2个可用于返回的项目(项目) 9和10)。这就是它发生的原因。
如果您想要随机项目,而不是随机播放列表而不跳过任何项目,只需获取您想要的数字。