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

首頁 > 語言 > PHP > 正文

php使用codebase生成隨機數

2024-09-04 11:43:21
字體:
來源:轉載
供稿:網友

這篇文章主要介紹了php使用codebase生成隨機數的示例,需要的朋友可以參考下,有25幅作品拿去投票,一次投票需要選16幅,單個作品一次投票只能選擇一次,前面有個程序員捅了漏子,忘了把投票入庫,有200個用戶產生的投票序列為空,那么你會如何填補這個漏子?

當然向上級反映情況。但是我們這里討論的是技術,就是需要生成1-25之間的16個不重復的隨機數,去填補。具體怎么設計函數呢?將隨機數存入數組,再在數組中去除重復的值,即可生成一定數量的不重復隨機數。

程序如下:

  1. <?php 
  2. /* 
  3. * array unique_rand( int $min, int $max, int $num ) 
  4. * 生成一定數量的不重復隨機數 
  5. * $min 和 $max: 指定隨機數的范圍 
  6. * $num: 指定生成數量 
  7. */ 
  8. function unique_rand($min$max$num) { 
  9.     $count = 0; 
  10.     $return = array(); 
  11.     while ($count < $num) { 
  12.         $return[] = mt_rand($min$max); 
  13.         $return = array_flip(array_flip($return)); 
  14.         $count = count($return); 
  15.     } 
  16.     shuffle($return); 
  17.     return $return
  18.  
  19. $arr = unique_rand(1, 25, 16); 
  20. sort($arr); 
  21.  
  22. $result = ''
  23. for($i=0; $i < count($arr);$i++) 
  24.  $result .= $arr[$i].','
  25. $result = substr($result, 0, -1); 
  26. echo $result
  27. ?> 

程序運行如下:

2,3,4,6,7,8,9,10,11,12,13,16,20,21,22,24

補充幾點說明:

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

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

返回數組前,先使用 shuffle() 為數組賦予新的鍵名,保證鍵名是 0-n 連續的數字。如果不進行此步驟,可能在刪除重復值時造成鍵名不連續,給遍歷帶來麻煩。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 海林市| 土默特右旗| 金沙县| 丹凤县| 永仁县| 梨树县| 北票市| 西峡县| 桂林市| 上犹县| 尖扎县| 珠海市| 昂仁县| 盐亭县| 河池市| 衡南县| 平顶山市| 盖州市| 霍城县| 安化县| 萝北县| 嘉兴市| 洛浦县| 浪卡子县| 屯门区| 金门县| 阿坝县| 崇文区| 丰镇市| 长岛县| 利津县| 唐河县| 霍山县| 台安县| 九龙城区| 嘉祥县| 乌兰县| 临汾市| 余江县| 恩施市| 兴山县|