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

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

Susan Sarandon
發布: 2024-12-07 08:54:12
原創
587 人瀏覽過

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板