2013-08-30 132 views
0

我需要生成100個隨機3位數字。我已經想出瞭如何生成1 3位數字。我如何生成100?這裏是我迄今爲止...如何在java中生成100個隨機3位數字?

import java.util.Random; 

public class TheNumbers { 
    public static void main(String[] args) { 
     System.out.println("The following is a list of 100 random" + 
      " 3 digit numbers."); 
     Random rand= new Random(); 

      int pick = rand.nextInt(900) + 100; 
      System.out.println(pick); 


} 

}

+1

您將需要一個['換下一loop'(http://docs.oracle.com/javase/tutorial/java/nutsandbolts/for.html ) – MadProgrammer

+0

或100..999上的'Colections.shuffle()'以避免重複。 – trashgod

+0

或者一套'......' – MadProgrammer

回答

2

嘗試for loop

for(int i=0;i<100;i++) 
     { 
      int pick = rand.nextInt(900) + 100; 
      System.out.println(pick); 
     } 
+0

是的!!!!!謝謝!!!!這工作!!!!!現在,你能告訴我爲什麼它能起作用,所以我可以記住下次嗎? – Chris

+0

因爲,您需要重複某些限制的值。所以使用for循環來實現它。 http://faculty.inverhills.mnscu.edu/speng/Beginning%20Java/Notes/chapter03/For.htm – newuser

+0

也試試這個http://www.tutorialspoint.com/java/java_loop_control.htm – newuser

2

如果你適應了下面的一段代碼,您的問題

for(int i= 100 ; i < 1000 ; i++) { 
     System.out.println("This line is printed 900 times."); 
    } 

,它會做你想做的。

+0

你爲什麼要開始指數在100? –

+0

@KendallFrey *「隨機3位數字」* - 真正的問題是,當OP只需要'100'數字時,爲什麼要'1000',大概在'100-999'之間...... – MadProgrammer

+0

@KendallFrey 1)MadProgrammer意味着100 -199 2)這個社區厭倦了有經驗的專業人員做功課的學生。你不相信我幾天前見過的評論交流。聲望點的承諾等。這個運動的成員通過提供線索來回應這種問題,但不是最終答案。 –

0

使用問題的答案Generating random numbers in a range with Java

import java.util.Random; 

public class TheNumbers { 
    public static void main(String[] args) { 
     System.out.println("The following is a list of 100 random 3 digit nums."); 
     Random rand = new Random(); 
     for(int i = 1; i <= 100; i++) { 
     int randomNum = rand.nextInt((999 - 100) + 1) + 100; 
     System.out.println(randomNum); 
     } 
} 
5

的基本概念是使用for-next循環,在其中您可以重複你的計算所需的次數......

你應該看看The for Statement更多細節

Random rnd = new Random(System.currentTimeMillis()); 
for (int index = 0; index < 100; index++) { 
    System.out.println(rnd.nextInt(900) + 100); 
} 

現在,這不排除產生重複。你可以使用一個Set,確保值的唯一...

Set<Integer> numbers = new HashSet<>(100); 
while (numbers.size() < 100) { 
    numbers.add(rnd.nextInt(900) + 100); 
} 
for (Integer num : numbers) { 
    System.out.println(num); 
} 
+0

+1套''。 – trashgod

+0

任何人都可以解釋爲什麼一個哈希集在這裏被用於不同的集合類型?我認爲哈希集映射了一個鍵和一個值,但我只能看到正在添加一個數字?另外,我測試了它,並認爲它會打印出100個值,但是我的打印量要少得多...... – javapalava

+0

OK - 從頭開始​​評論,我的終端窗口只設置爲顯示最大數量的值,但是第一個仍然適用。而且我仍然不明白這個Set如何確保唯一性? – javapalava

0

該解決方案是一個選擇,如果3位數字包括從0開始(例如,如果你正在生成PIN碼的)數字,如000,011,003等等

Set<String> codes = new HashSet<>(100); 
Random rand = new Random(); 
while (codes.size() < 100) 
{ 
    StringBuilder code = new StringBuilder(); 
    code.append(rand.nextInt(10)); 
    code.append(rand.nextInt(10)); 
    code.append(rand.nextInt(10)); 

    codes.add(code.toString()); 
} 

for (String code : codes) 
{ 
    System.out.println(code); 
}