关于Math.random()并转换为(int)

时间:2019-09-22 17:47:25

标签: java

为什么变量a和b没有得到任何值? 我这样做是为了将100边的数字1-100骰子掷出50.000次,我想看看它多久给一次数字1和100,但没有任何价值。结果仍然是a = 0和b = 0。

package Atest;
import javax.swing.*;

public class Tärning5{
    public static void main(String[] arg){

        int rolls;
        double dice = (int) (Math.random()*100) + 1;
        int n = 0;
        int b=0, a=0;

        for(rolls=50000; n<=rolls; dice = (int) (Math.random()*100) + 1) {
            n++;

            if(dice == 100) 
                a = a++;
            else if (dice == 1) 
                b = b++;
        }

                JOptionPane.showMessageDialog(null, "Dice rolls " + rolls + " times"
                        + "\n"
                        + "\nDice landed on 100 " +a+" times"
                        + "\nDice landed on 1 "+b+" times");  
         }
    }

1 个答案:

答案 0 :(得分:0)

我建议使用java.util.Random生成随机数。您还可以简化循环,这样会更直接。

    int a = 0;
    int b = 0;
    int rolls = 50000;
    Random random = new Random();
    for (int i = 0; i < rolls; i++) {
        int dice = random.nextInt(100) + 1;

        if (dice == 100) a += 1;
        if (dice == 1) b += 1;
    }

    System.out.println("a: " + a + ", b: " + b);

“ for”语句中的条件除了迭代计数外没有引用其他任何内容。在循环内部,我们可以使用现有的Random(随机)创建下一个随机int(在此示例中:在1到100之间的范围内)来“模拟”骰子掷骰。

示例输出:

a: 502, b: 475