2017-05-04 1286 views
1

我想在Android中獲得4個隨機值(彼此不同)1到4。以隨機順序從1到4獲取數字

我寫了這樣的代碼。但是價值並不相同。

Random random = new Random(); 
    int number, idSearch[]=new int[4]; 
    number = random.nextInt(4); 
    idSearch[0] = number; 
    for (int i = 1; i < 4; i++) 
    { 
     number = (int) random.nextInt(4); 
     for (int j = 0; j <= i; j++) 
     { 
      if (idSearch[j] == number) { 
       number = random.nextInt(4); 
      } 

     } 
     idSearch[i] = number; 
    } 

哪裏錯誤?你可以幫我嗎?

+0

你試圖解決錯誤的問題。你並沒有試圖得到4個隨機數,你試圖以隨機順序從1-4中得到數字。 – azurefrog

+0

對不起。我輸錯了。我試圖以隨機順序從1-4中獲得數字。 – zeynep

+1

'List al = IntStream.of(1,2,3,4).boxed()。collect(Collectors.toList()); \t \t Collections.shuffle(al); \t \t System.out.println(al);' –

回答

0

如果使用JDK1.8則可以如下所示以隨機順序,可以使用new Random().ints()生成從1號至4:或

int[] randoms = new Random().ints(1,5).distinct().limit(4).distinct().toArray(); 

如果使用JDK1.7較早,則需要使用Collections.shuffle()而不是重新創建邏輯的混洗。

+0

不,我試圖以隨機順序從1-4中獲取數字。 – zeynep

+0

是的,它的確如此 – developer

+0

謝謝你的幫助。但它給出了一個錯誤。 – zeynep

-1

你必須創建一個新的對象Random,並且請爲後面的拳頭使用第二個對象。

1

我認爲以隨機的順序生成與值的List<Integer> 1至4個(含)的最簡單的方法是首先創建初始值的List<Integer>和洗牌它:

List<Integer> list = Arrays.asList(1, 2, 3, 4); 

Collections.shuffle(list); 

System.out.println(list); 

>> [4, 1, 3, 2] 

請請注意,此列表無法添加或刪除。

如果你想它是可變的,簡單地將它傳遞給ArrayList的構造函數:

List<Integer> mutableList = new ArrayList<>(list); 

記得導入java.util.*