我正在构建一个非常简单的基于文本的俄罗斯轮盘“游戏”,当我制作一个7槽bulletChamber阵列时,我有点意识到我只存储两个值,这些值是“有子弹”或“没有子弹“。
而我只是想知道是否有一种方法可以在两个变量之间随机选择,其中每个变量都有自己的概率,前5/7表示没有子弹,2/7表示子弹?
答案 0 :(得分:1)
当然,只需将Math.random()乘以总机会数并检查> =(在这种情况下)子弹的数量:
public static void main(String[] args) {
System.out.println((Math.random() * 7) >= 2 ? "Click" : "Bang!");
}
答案 1 :(得分:0)
这可能不是一个好的答案,但它有效......
bullets = [0,0,0,0,0,1,1];
如果你从0到6(数组的索引)随机编辑,你将有5/7的机会不发射子弹(在子弹上获得0 [randomNum]),并且有2次发射子弹的机会(在子弹上获得1 [randomNum])。
答案 2 :(得分:0)
您可以这样做:
public static List<Boolean> getSlotsList(int bullets, int emptySlots) {
List<Boolean> shoots = new ArrayList<Boolean>();
for (int i = 0; i < bullets; i++) {
slots.add(Boolean.TRUE);
}
for (int i = 0; i < emptySlots; i++) {
slots.add(Boolean.FALSE);
}
Collections.shuffle(shoots);
return shoots;
}
您可以使用上述方法创建包含所需概率的列表。然后你可以删除元素并检查是否有子弹:
/* Remove element from the list, and check the result */
List<Boolean> shoots = getSlotsList(2, 5);
if (shoots.remove(0) == true) {
/* There is a bullet */
} else {
/* Empty sloot */
/* You could use the list again with the new bullet probabilities */
}