실시간 전략 게임의 임의 모드를 고려 중입니다.폭도 피킹 - 비용이 많이 드는 여러 항목을 무작위로 선택하여 보낼 범위를 지정하십시오.
이 모드에서 컴퓨터 상대방은 플레이어에게 오는 임의의 공격자 그룹 (mob)을 생성해야합니다. 각각의 가능한 공격자는 관련된 생성 비용을 가지며, 각각의 턴에는 일정한 최대량이 소비됩니다. 흥미를 없애기 위해 상대방은 항상 그 금액의 절반 이상을 소비해야합니다.
비용은 동적이지만 생성 비용은 동적이지만 느리게 변경됩니다. 주어진
void randomchoice(int N, int * selections, int * costs, int minimum, int maximum)
같은 것을 :
I 양식의 일상을 추구하고
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++ 제품군의 솔루션을 선호하지만 모든 알고리즘 힌트를 환영합니다.
나는이 알고리즘 중 균일 한 결과를 얻을하지 않습니다 -.. 특히, 동일한 단위의 큰 카운트가 너무 드물다 (나는 반복 고정 'r'에 대한 알고리즘 및 솔루션을 검토했습니다.) 'r'이 0보다 작 으면 - r이 단가보다 낮 으면 나는 그것을 버립니다. –