2011-09-15 90 views
1
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或任何給定數字之和。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); 
    } 
} 
+4

我只看到一個* *在下部代碼被生成的隨機數。 –

+3

您將隨機數加倍,而不是獲得兩個不同隨機數的總和。 –

回答

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); 
    } 
} 
1

號你計算隨機了一次,並且然後把價值翻倍。你想計算兩個不同的隨機數。

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