Как правильно записать в словарь значения с Random на C#?

Есть словарь <string,int> (название,количество). Мне нужно записать только 7 случайных позиций в другой словарь "по дороге" еще количество для каждого устанавливать случайное. Пример:

var giftList = new Dictionary<string, int>();
var target = expConfig.cases.Find(@case => @case.caseName == name);
Dictionary<string, int> list = target.items;
int randCount = 1;
for (var i = 0; i < 7; i++)
{
    int randItem = Core.Random.Range(0, list.Count);
    int randval = list.ElementAt(randItem).Value;
    if (randval > 1) randCount = Core.Random.Range(randval/2, randval + (randval/2));
    giftList.Add(list.ElementAt(randItem).Key, randCount);
    list.Remove(list.ElementAt(randItem).Key);
}

Создаю значит буферный словарь в него переписываю основной, а далее циклом выбираю 7 случайных позиций, параллельно проверяю значения, если значение текущей позиции больше 1 то "кручу барабан" и устанавливаю случайное значение, записываю в нужный словарь и убираю позицию из буферного да бы не было ошибки о существующем элементе.

Проблема в том, что почему-то игнорируется проверка и мне может выдать кучу предметов которые по умолчанию должны выдаваться в единичном экземпляре. Что я делаю не так? UPD: Приблизительное содержимое словаря target.items:

Dictionary<string, int> items = new Dictionary<string, int>
{
["Item1"] = 15,
["Item2"] = 5,
["Item3"] = 1,
["Item4"] = 10,
["Item5"] = 150,
....
}

Производил вывод в консоль до и после обработки в цикле. Данные "до" совпадают, а вот "после"... не могу понять почему проверка не срабатывает, такое чувство будто бы ключи и значения перемешиваются, ведь некоторым позициям все таки устанавливает значение 1, но не тем что надо.


Ответы (0 шт):