php產生不重複隨機數的方法:首先為陣列的每個數字依其下標順序賦值;然後開始取「[ i,$num-1 ]」範圍內的隨機數;最後在未改變的鍵值對中進行交替運算即可。
推薦:《PHP影片教學》
PHP高效能產生一個不重複隨機數字
PHP產生一個不重複隨機數組的封裝方法
/* * array unique_rand( int $min, int $max, int $num ) * 生成一定数量的不重复随机数 * $min 和 $max: 指定随机数的范围 * $num: 指定生成数量 */ function unique_rand($min, $max, $num) { //初始化变量为0 $count = 0; //建一个新数组 $return = array(); while ($count < $num) { //在一定范围内随机生成一个数放入数组中 $return[] = mt_rand($min, $max); //去除数组中的重复值用了“翻翻法”,就是用array_flip()把数组的key和value交换两次。这种做法比用 array_unique() 快得多。 $return = array_flip(array_flip($return)); //将数组的数量存入变量count中 $count = count($return); } //为数组赋予新的键名 shuffle($return); return $return; }
此方法以每次取得隨機數存入數組再去重...效率低. ..不想用
PHP高效產生m個n範圍內的不重複隨機數(m
註:在《 Programming Pearls 》一書中也有提到,題目為「如何有效率地產生m個n範圍內的不重複隨機數(m
此演算法非常巧妙的取隨機數的位置(陣列的下標),取代取隨機數本身,每次取到一個隨機數之後,就將其在取值範圍中排除,下一次只會在剩下的數字中取,一次遍歷就可以完成隨機數的選取,效率相當高。
function rand_num($num='200'){ for($i=0;$i<$num;$i++){ $n[$i] = $i; } for($i=0;$i<$num;$i++){ $rand = mt_rand($i,$num-1); //数组 随机数交换下标 if($n[$i] == $i){ $n[$i] = $n[$rand]; $n[$rand] = $i; } } }
1.第一步,為數組的每個數字按其下標順序賦值,獲得一個 $num 個數字鍵值對應順序排列的數組。
2.第二步,開始取範圍[ i,$num-1 ]範圍內的隨機數$rand,並將獲取到的隨機數$rand作為數組中當前位置鍵i對應下標的值$rand,將數組中鍵$rand對應下標的值替換為i,其實就是數組鍵值交叉互換。意義是,將已經產生的隨機數在取值範圍[ i,$num-1 ]中排除,下次會在剩下的數字中[ i 1,num-1 ]取值。
3.第三步,為避免重複取值,只在未改變的鍵值對中進行交替運算,即在原數組順序排列 (鍵==值) 的位置進行交替運算。
4.結束。
順序排列數組部分交換過程
#如上圖,取得10個隨機數字部分試例。
以上是php如何產生不重複的隨機數的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本文比較了酸和基本數據庫模型,詳細介紹了它們的特徵和適當的用例。酸優先確定數據完整性和一致性,適合財務和電子商務應用程序,而基礎則側重於可用性和

本文討論了確保PHP文件上傳的確保,以防止諸如代碼注入之類的漏洞。它專注於文件類型驗證,安全存儲和錯誤處理以增強應用程序安全性。

本文討論了在PHP中實施API速率限制的策略,包括諸如令牌桶和漏水桶等算法,以及使用Symfony/Rate-limimiter之類的庫。它還涵蓋監視,動態調整速率限制和手

本文討論了使用password_hash和pyspasswify在PHP中使用密碼的好處。主要論點是,這些功能通過自動鹽,強大的哈希算法和SECH來增強密碼保護

本文討論了OWASP在PHP和緩解策略中的十大漏洞。關鍵問題包括注射,驗證損壞和XSS,並提供用於監視和保護PHP應用程序的推薦工具。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

Atom編輯器mac版下載
最受歡迎的的開源編輯器

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)