generatePrizes根据乐透签的大小和总奖金数创建一系列奖金额。数组位置对应于乐透选区中正确数字的数量(零到大小,包括在内)。
用于产生奖金的算法如下。如果玩家正确猜出0,1或2个数字,则奖金金额为0.剩余的奖金是通过奖励到每个级别(从正确猜测所有数字开始)3/4的可用奖金生成的,舍入到最近的美元,最后一个计数(3个正确)收到任何遗骸。例如,如果抽奖是6个数字而奖金数是1000,那么6个正确将获得750,5个正确将获得3/4的剩余数或188个,4个正确将获得3/4个剩余部分或47个,并且3个正确如果只有3个数字和500个奖金,3个匹配的数字将获得全部500个。请注意,返回值(奖品)数组长度将比彩票中的数字数量多一个(因为它必须包括零和大小的奖品。
我似乎无法弄清楚如何使这种方法按照我想象的方式工作。我已经尝试了下面的代码,但它只是用相同的数字填充每个元素,我该如何改变它?
public static int[] generatePrizes(int size, int prizeMoney) {
int[] prizes = new int[size + 1];
int remainder = 0;
for (int i = 0; i < 2; i++) {
prizes[i] = 0;
}
for (int j = size; j > 2; j--) {
prizes[j] = (int)Math.round(prizeMoney * .75);
}
return prizes;
}
答案 0 :(得分:1)
public static int[] generatePrizes(int size, int prizeMoney) {
int[] prizes = new int[size + 1];
int remainder = prizemoney;
int lottery = prizeMoney ;
for (int j = size; j > 3; j--) {
prizes[j] = lottery ;
remainder= remainder - prizes[j];
lottery = (int)Math.round(remainder* .75);
}
for (int k = 3; k >= 0; k--) {
prizes[k] = remainder;
remainder = 0;
}
return prizes;
}
这应该解决。你没有更新剩余的奖金额。