2015-10-18 58 views
1

我的情況是,我試圖找到一個隨機數字模式發生器代碼,但我真的無法找到它。我需要使用「1」,「2」,「3」,「4」,「5」和「6」來創建一個4位數的隨機模式,如1111,1264,2564等。我試過這個,但它不是加工。如何製作一個隨機數字模式發生器?

public static void computer() { 
    List<Integer> template = Arrays.asList(1, 2, 3, 4, 5, 6); 
    for (int i = 0; i < 10; ++i) { 
     List<Integer> items = new ArrayList<Integer>(template); 
      Collections.shuffle(items); 
      System.out.println(items); 

    } 
} 
+2

你之前在什麼地方問過這個問題嗎?只是想着抱歉。嘗試http://stackoverflow.com/questions/363681/generating-random-integers-in-a-range-with-java –

+0

@AseemBansal對不起,我是新來這,這是我的第一篇文章,所以我不以爲我以前在任何地方都問過這個問題。我嘗試搜索,但我不能找到一個隨機數字模式生成器的解決方案。我被這段代碼困住了,不知道如何繼續下去。所以,我問。請原諒我,如果有的話。我想學習java編程。 – Newb

+0

不需要抱歉。你嘗試了一些東西然後來到這裏。嘗試閱讀我給出的鏈接。它包含更多的解釋和選擇。雖然學習不僅僅適用於可行的解決方案,還可以尋找解釋其原因的解釋。這樣你會更好地學習。 –

回答

1

嘗試了這一點:

Random r = new Random(); 
int number = 0; 
int d = 1; 

while (number < 1000) { 

    // generate number between 1-6 
    int num = r.nextInt(6) + 1; 

    number += num * d; 
    // increase the digit (units, tens, hundreds, thousands) 
    d *= 10; 
} 

System.out.println(number); 
+1

爲什麼數字<1000?它是四位數,所以應該是10000. –

+0

這是因爲,當數字是3位數字,即小於1000時,它進入循環內並生成另一個數字,現在變爲4位數字。如果檢查<10000,它將進入循環內的4位數字如6644,並生成5位數字 –

0
public static void computer() { 
    List<Integer> template = Arrays.asList(1, 2, 3, 4, 5, 6); 
    Random r = new Random(); 
    StringBuilder random = new StringBuilder(); 
    for (int i = 0; i < 4; ++i) { 
     int create = r.nextInt(6); 
     // find in array between 1-6 index 
     int find = template.get(create); 
     random.append(String.valueOf(find)); 
    } 
    System.out.println(random); 
} 
+0

感謝亨利。對不起。 –

+0

非常感謝!有效。我不能夠感謝你。 – Newb

0
Random r = new Random(); 
    String s = ""; 
    while(s.length() < 4) 
    { 
    int numpick = r.nextInt() % 6; 
    if(numpick > 0) 
     s += numpick; 
    } 

    return Integer.parseInt(s); 

可明顯刷了一點點,但我認爲這是發展的數字是最好的策略。

+2

使用['r.nextInt(6)'](https://docs.oracle.com/javase/8/docs/api/java/util/Random.html#nextInt-int-)而不是'r.nextInt ()%6'會更好。 – fabian