首頁 >後端開發 >php教程 >如何有效率地產生特定範圍內的唯一隨機數列表?

如何有效率地產生特定範圍內的唯一隨機數列表?

Susan Sarandon
Susan Sarandon原創
2024-12-07 08:54:12574瀏覽

How Can I Efficiently Generate a List of Unique Random Numbers Within a Specific Range?

產生範圍內的唯一隨機數

產生指定範圍內的唯一隨機數清單可能是一項具有挑戰性的任務。一種方法是產生隨機數字並每次檢查它們是否唯一。然而,這種方法對於大範圍或大量隨機數可能效率低。

更最佳化的方法是建立所需範圍內的數字數組,然後對數組進行打亂以隨機化順序。產生的陣列將包含指定範圍內的唯一隨機數。

使用具有隨機順序的數字範圍的陣列:

$numbers = range(1, 20);
shuffle($numbers);

在此程式碼中,範圍(1, 20) 建立一個從1 到20 的數字數組。然後 shuffle() 函數會隨機化數組中數字的順序。當所需的隨機數數量小於或等於數字範圍時,此方法特別有用。

使用包裝函數:

對於更複雜的場景,您可以建立一個包裝函數,以最小值、最大值和所需數量的隨機數作為輸入:

function UniqueRandomNumbersWithinRange($min, $max, $quantity) {
    $numbers = range($min, $max);
    shuffle($numbers);
    return array_slice($numbers, 0, $quantity);
}

This函數取得初始範圍的數字,對它們進行打亂,然後使用array_slice() 提取所需數量的隨機數。

用法範例:

以下程式碼示範如何使用UniqueRandomNumbersWithinRange()函數:

<?php
print_r(UniqueRandomNumbersWithinRange(0, 25, 5));
?>

結果:

Array
(
    [0] => 14
    [1] => 16
    [2] => 17
    [3] => 20
    [4] => 1
)

結果:

此程式碼產生一個由5 個 0 到 25 之間的唯一隨機數字組成的陣列。這些數字經過打亂以確保唯一性.

以上是如何有效率地產生特定範圍內的唯一隨機數列表?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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