То, что я хочу сделать, это что-то вроде:Выберите подмножество списка на основе случайных величин
var rnd = new Random();
var list1Data = ...; //100 elements
var list2Data = list1Data.Where(_ => rnd.NextDouble() > 0.1);
Других слов, должны быть выбрано около 90% из пунктов списка, около 10% не ... он имитирует очень просто неисправное оборудование.
Но я получаю вместо этого 100% предметов. Как я могу это исправить?
UPDATE: , когда я смотрю в отладчике он показывает list2.Count такое же, как list1.Count НО когда я расширить представление результатов, он показывает меньше элементов ... т.е. это делать, как должно, но отладчик показывает запутанную информацию.
В этом примере расширяющегося Results View
показывает около 90 элементов от запуска к запуску, но Count
показывает 100.
Является ли это ошибка в System.Linq.Enumerable.WhereListIterator или моего непонимания?
_ «Я думаю, что rnd.NextDouble() вызывается только один раз ...» _ - прочитайте [ask] и объясните свою проблему очень явно, включая [mcve]. Угадание не заставит вас очень далеко отсюда. Очевидно, вы заметили что-то, что заставляет вас так думать, но если вы не укажете свои наблюдения, а только свои мысли, мы не можем сказать ничего полезного. – CodeCaster
Нет, ваше редактирование не помогает. Снова прочитайте [ask] и предоставьте [mcve]. Этот код вряд ли вернет содержимое 'list1' всего в' list2'. Опять же, предоставьте [mcve]. Вероятно, вы не используете 'rnd', а' new Random() 'в инструкции' Where() 'или что-то еще. – CodeCaster
Что такое 'rnd'? Разве вы не воссоздаете экземпляр «Случайный» и, следовательно, имеете сильно искаженный экземпляр? –