php產生不重複隨機數的方法解析

來源:互聯網
上載者:User
  1. function get_randoms($min,$max,$num){
  2. $count = 0;
  3. $res = array();
  4. while($count<$num){
  5. $res[] = mt_random($min,$max);
  6. $res = array_flip(array_flip($res));
  7. $count = count($res);
  8. }
  9. return $res;
  10. }
  11. $result = get_randoms(1,60,10);
  12. ?>
複製代碼

在這裡 他用$count 結果數組的個數,他在while 迴圈中 使得結果數組的個數小於 目標個數。通過這樣,擷取到$count 是 目標個數 的一個數組。(bbs.it-home.org 指令碼學堂) 期間,每一個迴圈中,通過mt_random($min,$max),隨機出區間內的一個值,存放到數組$res中,然後通過兩次key-value 交換,也就是通過數組key的唯一性,使得做到不重複。

我看了這個邏輯的代碼之後,我不禁陷入了深思,假如說當你不知道array_filp 函數的時候你怎麼做? 說白了就是用key的唯一性,使得隨機數不會存在重複。那麼我們能不能將這個問題簡單化處理呢?

代碼:

  1. function get_randoms($min,$max,$num){
  2. $count = 0;
  3. $res = array();
  4. while($count<$num){
  5. $key = mt_random($min,$max);
  6. $res[$key] = $key;
  7. $count = count($res);
  8. }
  9. return $res;
  10. }
  11. $result = get_randoms(1,60,10);
  12. ?>
複製代碼

這樣完全是單獨的通過數組key的唯一性 解決了這個問題。根本就不會用到array_flip。

總結: 1,因為php提供了大量的內建函數,他們的執行效率都很高。(bbs.it-home.org 程式員之家)在遇到問題的時候,儘可能去用它去解決問題。這樣方便而且快速。

2,php 提供了大量的內建函數,執行效率也很高,但是,雖然效率高,還是需要時間去執行的。在遇到問題的時候,不要盲目的去做,可以先看清處理方法的本質,以便於巧妙的實現他。

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.