簡體   English   中英

從數組中隨機選擇元素

[英]Randomly pick elements from an array

這是使用圖形組件創建匹配游戲的一部分。 我需要編寫一個名為randomOrder的類方法。 我應該能夠隨機選擇要使用的圖片,並且需要將它們隨機放置在板上(目前,該板是4x4)。

我想要一個隨機移動數組中元素的方法。 為此,我寫了

public class Tools {

   public static void randomOrder(Object[] f){


      Object[] a = new Object[8];
   }
}

我從提示中得到的唯一內容是:

在方法內部使用一個臨時數組,一次從原始數組中取出一個元素,然后將其放置在臨時數組中。如果采用array-position,則需要隨機分配一個新位置。 ,您可以將臨時數組復制到原始數組。

我不明白如何使用提示。 我覺得這太復雜了,我什至無法提出一個適當的問題。

  1. 有人可以用更容易理解的問題向我翻譯提示嗎?
  2. 我可以開始嗎?

如果問題不好,我很抱歉,我不知道如何改善它。 歡迎任何建議。

讓我嘗試:

在方法內部使用臨時數組

您已經做到了,盡管數組a的長度應與f相同

一次從原始數組中取出一個元素並將其放置在臨時數組中

您遍歷a ,並對每個索引執行以下操作:

創建一個介於0和數組大小之間的隨機整數,例如,對於4x4網格,您的數組長度為16,因此索引將介於0和15之間(包括兩端)。

獲取元素從指數f ,並將其放置在當前位置a 然后將f中的索引設置為null

例:

//iterate
for( int i = 0; i < a.length; i++ ) { 
  int random = ...; //create the random number here
  Object o = f[random];

  while( o == null ) {
    //see below
  }

  a[i] = o;
}

如果采用了數組位置,則需要隨機分配一個新位置。

如果f的元素已經為null,則可以創建一個新的隨機數(這是文本所暗示的內容),或者遞增該索引直到結束為止或找到一個非null的元素(從性能的角度來看可能更好)您到達終點,返回f索引0。

放置所有元素后,可以將臨時數組復制到原始數組。

當您完成填寫a你再一次迭代,並在設定的元素f根據其在指數a ,即

for( int i = 0; i < a.length; i++ ) { 
  f[i] = a[i];
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM