1

我让这个函数在 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 铜矿石

4

1 回答 1

5

采用:

    int ore = (int) (Math.random() * 10 + 1);

强制转换为 int 比乘法绑定更紧密。

nextInt使用类中的方法会更好java.util.Random:它更有效并保证均匀分布。乘法并施法可能有轻微的偏差。

private Random myRandom = new Random();
public void mineOre() {

    int ore = myRandom.nextInt(10)+1

    if(ore ==1) {                       
    ....
}
于 2013-09-24T15:32:44.103 回答