国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > PHP > 正文

PHP生成指定范圍內的N個不重復的隨機數

2024-05-05 00:07:35
字體:
來源:轉載
供稿:網友

思路:將生成的隨機數存入數組,再在數組中去除重復的值,即可生成一定數量的不重復隨機數。

在PHP網站開發中,有時候我們需要生成指定范圍內一定數量的不重復隨機數,具體怎么設計這個生產隨機數的函數呢?我們可以將隨機產生的數存入數組,但在存入的同時去除重復的值,即可生成一定數量的不重復隨機數。當然也可以把指定范圍內的數值存進數組,再使用shuffle($array)打亂這個數組,然后再截取其中一定數量的值。但后面的一種做法在指定的隨機數范圍太大的時候會產生一個較大的數組。

下面給出第一種做法的代碼,第二種做法更簡單,大家可以嘗試下,其實也差不多

<?php/** array unique_rand( int $min, int $max, int $num )* 生成一定數量的不重復隨機數,指定的范圍內整數的數量必須* 比要生成的隨機數數量大* $min 和 $max: 指定隨機數的范圍* $num: 指定生成數量*/function unique_rand($min, $max, $num) {  $count = 0;  $return = array();  while ($count < $num) {    $return[] = mt_rand($min, $max);    $return = array_flip(array_flip($return));    $count = count($return);  }  //打亂數組,重新賦予數組新的下標  shuffle($return);  return $return;}//生成10個1到100范圍內的不重復隨機數$arr = unique_rand(1, 100, 10);echo implode($arr, ",");?>

程序運行如下:

48,5,19,36,63,72,82,77,46,16

補充幾點說明:

1、生成隨機數時我們用了 mt_rand() 函數。這個函數生成隨機數的平均速度要比 rand() 快幾倍。

2、去除數組中的重復值時用了“翻轉法”,就是用 array_flip() 把數組的 key 和 value 交換兩次。這種做法在去除數組重復值的同時效率也比用 array_unique() 快得多。

3、返回數組前,先使用 shuffle() 為數組賦予新的鍵名,保證鍵名是 0-n 連續的數字。如果不進行此步驟,可能在刪除重復值時造成鍵名不連續,如果用for遍歷的時候會有問題,但如果用foreach或不需要遍歷的時候可以不需要shuffle。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對VeVb武林網的支持。


注:相關教程知識閱讀請移步到PHP教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 邳州市| 宁晋县| 绵竹市| 长葛市| 胶南市| 舟曲县| 泉州市| 泰来县| 固原市| 彭水| 巢湖市| 洞头县| 浙江省| 噶尔县| 子洲县| 南雄市| 会昌县| 永安市| 霍州市| 河北省| 祁阳县| 昌平区| 古田县| 栾城县| 吉林市| 湖州市| 阳东县| 镇远县| 安图县| 财经| 泽库县| 赤水市| 石景山区| 石柱| 江安县| 黑山县| 衡阳市| 观塘区| 甘南县| 扎鲁特旗| 宝鸡市|