PHP擷取隨機數

來源:互聯網
上載者:User

<?php

  $FileID=date("Ymd-His") . '-' . rand(100,999);

   //$FileID為   20100903-132121-908   這樣的的隨機數

?>

<?php
function randomkeys($length)
{
 $pattern='1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLOMNOPQRSTUVWXYZ';
 for($i=0;$i<$length;$i++)
 {
   $key .= $pattern{mt_rand(0,35)};    //產生php隨機數
 }
 return $key;
}
 echo randomkeys(4);
?>

 

<?php

//seed使用者自訂函數以微秒作為種子

function seed()

{

list($msec, $sec) = explode(' ', microtime());

return (float) $sec;

}

//播下隨機數發生器種子,用srand函數調用seed函數的返回結果

srand(seed());

//輸出產生的隨機數,隨機數的範圍為10-100

echo rand(10,100);

?>

上面這個和下面這個不是沒什麼不同嗎?都是隨機輸出10-100之間的數,新人學習,可能問的太簡單了呵呵

<?php

echo rand(10,100);

?>

mt_rand(10,100);

 

srand是種子,如果不設的話預設是1

rand一般是利用種子做參數的一種固定的運算

你試一下就知道了,不設種子或者設一個固定的種子,運行rand

然後再關了瀏覽器再開,再運行rand

你會發現結果一直是一樣的

先說rand()函數吧,rand([int min], [int max])    本函數從min和max之間取一個隨機數。若沒有指定隨機數的最大及最小範圍,本函數會自動的從0到        RAND_MAX中取一個隨機數。

但是如果只用rand()這個函數,隨機數的亂度很大,每次在取隨機數之前最好使用srand()函數,以配置新的隨機數種子。

解釋一下下面這個用法(一般都是這樣用這兩個函數的):

srand((double)microtime()*1000000);

$rand_number= rand();

microtime()返回了兩個值:當前毫秒和時間戳記,我們要提取隨機數,只能從毫秒中取一個隨機數,(double)microtime()就只返回當前的毫秒值。

microtime()是以秒為單位的毫秒數,因而值都是小數,乘以1000000將其換算為整數

 

 

它們的工作流程如下:

(1):首先,給srand()提供一個”種子”;,它是一個unsigned_int類型的值。

(2):_然後,調用rand(),它會根據提供給srand()的值返回一個隨機數(範圍在_0~32767之間)

(3):根據需要多次調用rand(),不斷得到新的隨機數。

(4):無論什麼時候可以給srand()提供一個新的“種子”,從而進一步“隨機化”rand()的

輸出結果。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.