1到6之间的两个随机整数之和

时间:2011-09-15 16:26:17

标签: java

public class SumOfTwoDice { 
    public static void main(String[] args) {
        int SIDES = 6;
        int a = 1 + (int) (Math.random() * SIDES);
        int b = 1 + (int) (Math.random() * SIDES);
        int sum = a + b;
        System.out.println(sum);
    }
}

以上代码用于找出1到6或任何给定数字之间的两个随机整数之和。

以下是我自己编写的代码,这很好。我实现两个随机整数之和的方式。 这是正确的 ???

public class TestSample {
    public static void main(String[] args) { 

        int a = Integer.parseInt(args[0]); // 1
        int b = Integer.parseInt(args[1]); // 6
        double ran = Math.random();
        System.out.println("Random Number" + ran);
        double random;

        if(a < b)
            random = (b-a)*ran + a;
        else
            random = (a-b)*ran + b;

        double sum = random + random;
        System.out.println("Random Number" +(int)sum);
    }
}

3 个答案:

答案 0 :(得分:3)

强制性XKCD

Random Number

答案 1 :(得分:2)

你必须再次使用Math.random()来生成0到1之间的新随机数。应该是这样的:

 public class TestSample {
        public static void main(String[] args) { 

        int a = Integer.parseInt(args[0]); // 1
        int b = Integer.parseInt(args[1]); // 6
        double random1, random2;

        if(a < b) {
            random1 = (b-a)*Math.random() + a;
            random2 = (b-a)*Math.random() + a;
        }
        else {
            random1 = (a-b)*Math.random() + b;
            random2 = (a-b)*Math.random() + b;
        }
        double sum = random1 + random2;
        System.out.println("Random Number" +(int)sum);
    }
}

答案 2 :(得分:1)

没有。您只需计算一次随机值,然后将值加倍。您想要计算两个不同的随机数。

int random1 = a + (int) ( Math.random() * (a-b) );
int random2 = a + (int) ( Math.random() * (a-b) );
int sum = random1 + random2;