Наверно повторюсь во многом, но вот что приходит лично мне в голову. Ты упомянул, что данный код - лишь часть программы, поэтому исходя из того, что ты привел:
Во-первых, у тебя логика перемешана с данными, так лучше не делать. Вынеси и храни перки где-то в другом месте, лучше вообще в каком-нибудь json, который можно поменять без необходимости собирать программу заново.
Да, нет необходимости гонять циклы, просто бери элемент по рандомному индексу. Я бы добавил приватный метод. который принимает на вход массив и возвращает\выводит рандомный элемент из него.
Не очень понятно, где применяется haveInfluence, ты говоришь, что должен браться всегда один перк, который имеет влияние и остальные без.
Может стоит группировать их по этому признаку тоже? Perk является классом, так что ты можешь создать еще два массива, сложить туда объекты которые влияют и не влияют. И брать один рандомный с первого массива и остальное нужно количество со второго.
Нужна ли тебе группировка по цвету вовсе - тоже тяжело сказать.
По поводу Dictionary, ты можешь использовать для ассоциации цвет => перки, но мне кажется это меньшая из проблем.
Наверно повторюсь во многом, но вот что приходит лично мне в голову.
Ты упомянул, что данный код - лишь часть программы, поэтому исходя из того, что ты привел:
Во-первых, у тебя логика перемешана с данными, так лучше не делать. Вынеси и храни перки где-то в другом месте, лучше вообще в каком-нибудь json, который можно поменять без необходимости собирать программу заново.
Да, нет необходимости гонять циклы, просто бери элемент по рандомному индексу. Я бы добавил приватный метод. который принимает на вход массив и возвращает\выводит рандомный элемент из него.
Не очень понятно, где применяется haveInfluence, ты говоришь, что должен браться всегда один перк, который имеет влияние и остальные без.
Может стоит группировать их по этому признаку тоже? Perk является классом, так что ты можешь создать еще два массива, сложить туда объекты которые влияют и не влияют. И брать один рандомный с первого массива и остальное нужно количество со второго.
Нужна ли тебе группировка по цвету вовсе - тоже тяжело сказать.
По поводу Dictionary, ты можешь использовать для ассоциации цвет => перки, но мне кажется это меньшая из проблем.