Есть код, который рандомизирует общий список, и даёт на выход N-элементов Иногда он возвращает всё время одинаковые данные, иногда норм работает. В чем может быть проблема?
public static IList<TSource> RandomizeCollection<TSource>(this IList<TSource> source, int maxItems)
{
int randomCount = source.Count > maxItems ? maxItems : source.Count;
int?[] randomizedIndices = new int?[randomCount];
Random random = new Random();
for (int i = 0; i < randomizedIndices.Length; i++)
{
int randomResult = -1;
while (randomizedIndices.Contains((randomResult = random.Next(0, source.Count))))
{
//0 -> since all list starts from index 0; source.Count -> maximum number of items that can be randomize
//continue looping while the generated random number is already in the list of randomizedIndices
}
randomizedIndices[i] = randomResult;
}
IList<TSource> result = new List<TSource>();
foreach (int index in randomizedIndices)
result.Add(source.ElementAt(index));
return result;
}
Возможно слишком быстро идут два вызова подряд этой функции - и Random
оказывается инициализирован одинаковым семенем. Вынесите метод в отдельный класс, и создавайте Random один раз вне функции. должно заработать
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Доброе время суток! Не так давно начал осваивать Entity Framework, но заметил, что все гайды упускают некоторые вещи, которые мне очень хотелось бы понять