【题目】
游戏玩家的5个属性值都是20,现在达到一定级数,可以让系统重新分配技能点,要求随机分配,分配后总数不超过100,各个属性值在10~35之间。要求分配得足够随机。
【解答】
#include <iostream>
#include <ctime>
int main(){
int l[5] = { 0,1,2,3,4 }; //存放下标,从0开始
srand(time(0));
for (int i = 4; i > 0; i--) { //使数组l随机排序
std::swap(l[i], l[rand() % (i+1)]); //注意+1,对5取余获得0,1,2,3,4
}
int value[5] = { 10,10,10,10,10 };
int last = 50;
int add = 0;
for (int i = 0; i < 4; i++) { //遍历0,1,2,3,
add = rand() % (last + 1);
value[l[i]] += add;
last -= add;
}
value[l[4]] += last;//剩下的点数加到4中
//输出结果
int sum = 0;
for (int i = 0; i < 5; i++) {
std::cout << value[i]<<std::endl;
sum += value[i];
}
std::cout << "sum:"<< sum << std::endl;
return 0;
}