在java中尝试挑战后,制作了一个“赌场”。风格游戏,我已经到了我有一个包含10个值的数组的点,每个值都是他们可以赢得的百分比变化。这些被分配到阵列中的相同位置,因为它们的' ID'是,例如。 playerid[i]
适用于百分比为percentageChance[i]
在这个阶段,我不知道我可以去哪里实际确定“胜利者”。我考虑过从1-100开始随机编号,无论它落在哪个区域都意味着该人获胜,但我不知道如何实现这一点,或者是否有更清洁/更有效的技术。 / p>
答案 0 :(得分:2)
你听起来像是在正确的轨道上!假设所有概率加起来都是100,我会在1到100之间取一个随机数,然后看看它在阵列中的位置。
Random r = new Random();
int rand = r.nextInt(100) + 1;
int sum = 0;
for(int i = 0; i < 10; i++){
sum += percentChance[i];
if(sum <= rand){
//player i wins
}
}
答案 1 :(得分:2)
如果所有机会总和为100,那么只需要一个数字btw 1和100:
Random r = new Random();
int winner = r.nextInt(100) + 1;
然后获得阵列的胜利者位置:
int count = 0;
for (i = 0; i < 10; i++) {
count += chances[i];
// this will give i position
if (count >= winner) break;
}
System.out.println("Winner is " + playerid[i]);
想象一下你得到winner = 34
,抓住机会阵列并获得相应的位置。
chances = [10, 5, 5, 30, 5, 5, 5, 5, 25, 5];
第一次迭代计数为10,没有任何反应,15,20之后......
i count
- -----
0 10
1 15
2 20
3 50 count > winner so i=4 is the winner!