首頁  >  文章  >  Java  >  Java 中的 Shuffle()

Java 中的 Shuffle()

PHPz
PHPz原創
2024-08-30 15:36:36995瀏覽

Java 有許多內建函數可以對集合或其他資料類型執行不同的操作,其中之一就是 shuffle。 Shuffle 函數在 Python 等許多其他語言中都可使用。

開始您的免費軟體開發課程

網頁開發、程式語言、軟體測試及其他

  • shuffle函數用於對集合元素進行洗牌。
  • 它隨機排列參數中傳遞的列表元素。
  • Java 中的 shuffle 有兩種方法,一種是使用 collections shuffle 方法,另一種是使用 random class。
  • 集合shuffle函數也可以透過兩種方式調用,一種是帶random參數來指定隨機性,另一種是不帶參數。
  • 隨機播放()
  • 隨機播放(, )
  • 您需要傳遞列表,以便我們將數組轉換為列表,然後將其傳遞給集合。 shuffle 並再次將結果轉換為陣列。

Java 中 Shuffle() 的語法

隨機播放方法宣告:

public static void shuffle(List<?> list)
public static void shuffle(List<?> list, Random random)

參數:

  • 清單:您將通過的清單將會洗牌。
  • 隨機:這是傳遞種子值的隨機函數,該種子值將成為隨機性的來源。

回傳:

  • shuffle 函數不會傳回任何值;它只是隨機排列清單。

Java 中的 Shuffle() 範例

在下面的範例中,我們從包含一些字母的陣列中建立了一個列表,並使用 shuffle 方法對陣列進行洗牌。每次運行時,您都會得到不同的隨機清單。

範例#1

代碼:

import java.util.*;
public class CollectionsShuffleExampleWithoutRandom {
public static void main(String[] args) {
List<String> list = Arrays.asList("R", "A", "H", "U", "L");
System.out.println("Before Shuffle : "+list);
Collections.shuffle(list);
System.out.println("After shuffle : "+list);
}
}

輸出:

Java 中的 Shuffle()

範例#2

在下面的範例中,我們建立一個整數連結列表並向其中添加一些整數。但這裡我們傳遞了另一個參數,即隨機函數,它將成為隨機性的來源。然後我們傳遞了種子值為5的Random函數。這是另一種風味,或者我們可以說是使用帶有Randomness的shuffle函數的方法。

代碼:

import java.util.*;
public class CollectionsShuffleWithRandom {
public static void main(String[] args) {
//Create linked list object
LinkedList<Integer> list = new LinkedList<Integer>();
//Add values
list.add(90);
list.add(100);
list.add(1);
list.add(10);
list.add(20);
System.out.println("Before Shuffle = "+list);
//Random() to shuffle the given list.
Collections.shuffle(list, new Random());
System.out.println("Shuffled with Random() = "+list);
//Random(5) to shuffle the given list.
Collections.shuffle(list, new Random(5));
System.out.println("Shuffled with Random(5) = "+list);
}
}

輸出:

Java 中的 Shuffle()

無 Shuffle 方法的洗牌

如果您想要更多地控制隨機播放,那麼您可以編寫自己的方法來使用 random 方法和另一種隨機方法來隨機播放清單。這種方法更加靈活且易於適應任何應用。您可以實際了解 Java 內建方法中的 shuffle 是如何運作的。

輸入: 一個 int 陣列

輸出: 打亂數組(以隨機順序)

範例:

public static int[] ShuffleArray(int[] array){
Random rand = new Random();  // Random value generator
for (int i=0; i<array.length; i++) {
int randomIndex = rand.nextInt(array.length);
int temp = array[i];
array[i] = array[randomIndex];
array[randomIndex] = temp;
}
return array;
}

上面的函數只需要傳遞一個陣列整數,它就會傳回一個打亂後的陣列。在函數內部,您可以看到我們正在迭代數組直到其長度並產生一個隨機數,它將被視為數組索引,它將與另一個數組交換。這就是數組內元素交換的方式。產生的數組將是交換後的數組。

從上面的函數中,我們可以得到 shuffle 函數的基本概念,其中將發送一個值列表,並且每​​次迭代數組中的元素時都會產生一個隨機數。該元素將與同一列表中的另一個元素交換,索引是從隨機函數隨機產生的。

隨機播放功能的重點

  • 此方法適用於隨機排列清單元素並打亂它們。
  • 每次執行的結果都可能不同。
  • 函數不需要太多時間,並且以線性時間運行。
  • 如果你提供的清單沒有實作RandomAccess接口,那麼shuffle會先將清單複製到數組中,對數組副本進行洗牌,然後將其複製到結果清單中並返回。
  • 隨機播放向後遍歷清單 - 重複從最後一個元素到第二個元素。
  • 遍歷時,它隨機選擇元素並與當前位置交換。
  • 隨機選擇的元素是清單中從第一個元素到目前元素的部分。

例外:

  • UnsupportedOperationException:如果傳遞的列表或列表迭代器不支援集合操作。

Shuffle 的應用

在許多情況下,下面的隨機播放功能可能是一些應用:

  • 在 QA 應用程式中打亂問題清單。
  • 隨機排列您每天想要向應用程式使用者顯示的報價清單。
  • 您想要為使用者指派彩票號碼的彩票應用程式。
  • 為付款欄位產生唯一的交易編號。
  • 可以為不同使用者產生唯一的使用者id,並將其作為使用者id的前綴。
  • 它也可以用於加密應用程式。

結論

在上面的文章中,我們了解了 shuffle 的工作原理以及如何使用它。可能有多個用例,您可以使用帶有隨機參數的shuffle 函數,或者不使用隨機參數的shuffle 函數,並且某些應用程式可能需要不同的靈活實現,您可以使用Java 的Random 函數編寫自己的shuffle 函數。

以上是Java 中的 Shuffle()的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn