Я рассматриваю случайный режим для стратегии в реальном времени.
В этом режиме компьютерный противник должен генерировать случайную группу атакующих (моб), которая придет к игроку.Каждый возможный злоумышленник имеет связанную стоимость создания, и каждый ход имеет определенную максимальную сумму, которую можно потратить.Чтобы не сделать это неинтересным, оппонент должен всегда тратить как минимум половину этой суммы.
Сумма расходов очень динамична, а затраты на создание динамичны, но меняются медленнее.
Я ищу подпрограмму в форме:
void randomchoice( int N, int * selections, int * costs, int minimum, int maximum )
Так, что дано:
N = 5 (for example, I expect it to be around 20 or so)
selections is an empty array of 5 positions
costs is the array {11, 13, 17, 19, 23}
minimum and maximum are 83 and 166
Вернется:
83 <= selection[0]*11 + selection[1]*13 + selection[2]*17 + selection[3]*19 + selection[4]*23 <= 166
Большинствоважно, чтобы я выбрал равномерно случайный отбор - все попытки, которые я пробовал, приводят в основном к нескольким из самых крупных атакующих, а «зерги» из мелких слишком редки.
Хотя я бы предпочел решения вC / C ++, любые алгоритмические подсказки приветствуются.