我有这个函数在for循环中运行10次,它应该随机化并给出随机矿石,但是现在脚本给出10个铜矿石
public void mineOre() {
int ore = (int) Math.random() * 10 + 1;
if(ore ==1) {
inventory.addInventory("Copper Ore");
} else if(ore ==2) {
inventory.addInventory("Iron Ore");
} else if(ore ==3) {
inventory.addInventory("Steel Ore");
}else if(ore ==4) {
inventory.addInventory("Gold Ore");
}else if(ore ==5) {
inventory.addInventory("Iron Ore");
} else if(ore > 6) {
}
}
我在这个
上运行了该功能 for (int i = 0; i < 10; i++) {
mineOre();
}
如何修复mineOre以便随机化?现在感觉math.random()运行一次,然后它使用该数字10次
我也试过
for (int i = 0; i < 10; i++) {
int ore = (int) Math.random() * 10 + 1;
if(ore ==1) {
inventory.addInventory("Copper Ore");
} else if(ore ==2) {
inventory.addInventory("Iron Ore");
} else if(ore ==3) {
inventory.addInventory("Steel Ore");
}else if(ore ==4) {
inventory.addInventory("Gold Ore");
}else if(ore ==5) {
inventory.addInventory("Iron Ore");
} else if(ore > 6) {
}
}
它仍然提供10个铜矿石
答案 0 :(得分:5)
使用:
int ore = (int) (Math.random() * 10 + 1);
对int的强制转换比乘法更紧密。
使用java.util.Random
类中的nextInt
方法会更好:它更有效并保证统一分布。乘法铸造方法可能略有偏差。
private Random myRandom = new Random();
public void mineOre() {
int ore = myRandom.nextInt(10)+1
if(ore ==1) {
....
}