萬盛學電腦網

 萬盛學電腦網 >> 網絡編程 >> php編程 >> php隨機數字代碼

php隨機數字代碼

   今天,有朋友咨詢烈火PHP隨機數字的問題,這是PHP的基礎問題,大家可以參考一下烈火提供的PHP手冊,由於時間關系,小編也懶的寫,在網上找了一些例子,綜合在一起,希望對大家有所幫助吧,如有問題請在下面說出來。

  

  //seed用戶自定義函數以微秒作為種子

  function seed()

  {

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

  return (float) $sec;

  }

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

  srand(seed());

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

  echo rand(10,100);

  ?>

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

  

  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()的

  輸出結果。

copyright © 萬盛學電腦網 all rights reserved