廊坊SEO-解決各種網站問題▩↟│◕·,中小企業線上幫手
網站最佳化專家

網站首頁 網站模板 正文

如何用php隨機生成一個數字

2022-03-31 網站模板 458 ℃ 0 評論

如何用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之間的數,新人學習,可能問的太簡單了呵呵

<?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()的輸出結果₪₪◕•。


最終的程式碼是

<?php

echo rand(10,100);

?>


括號裡面是數字的範圍▩↟│◕·,可以根據自己的需要修改範圍₪₪◕•。


標籤╃│▩│✘:

本文暫時沒有評論▩↟│◕·,來新增一個吧(●'◡'●)

歡迎 發表評論:

搜尋
網站分類
文章歸檔
標籤列表
麻批好紧日起要舒服死了,精品免费一区二区三区在,国产精品无码一区二区三区不卡,久久久久亚洲av无码专区导航