產生範圍內的唯一隨機數
產生指定範圍內的唯一隨機數清單可能是一項具有挑戰性的任務。一種方法是產生隨機數字並每次檢查它們是否唯一。然而,這種方法對於大範圍或大量隨機數可能效率低。
更最佳化的方法是建立所需範圍內的數字數組,然後對數組進行打亂以隨機化順序。產生的陣列將包含指定範圍內的唯一隨機數。
使用具有隨機順序的數字範圍的陣列:
$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中文網其他相關文章!