日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

php变量值随机,PHP生成各类随机数值

發布時間:2025/5/22 php 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php变量值随机,PHP生成各类随机数值 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

今天研究易支付系統測試支付功能的時候,突然想到說用戶打開隨機產生數值進行測試支付可以有效的防止一些不安好心的人惡意舉報,于是我就網上沖浪,整理了幾個關于PHP隨機產生數值的方法。下面就分享給大家!

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

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

echo date("YmdHis").mt_rand(100,999);

// 同樣也可以這樣得出 20190225132121908 這樣的隨機數

?>

function randomkeys($length)

{

$key = '';

$pattern='1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLOMNOPQRSTUVWXYZ';

for($i=0;$i

{

$key .= $pattern{mt_rand(0,35)}; //生成php隨機數

}

return $key;

}

echo randomkeys(4);

?>

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

function seed()

{

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

return (float) $sec;

}

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

srand(seed());

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

echo rand(10,100);

?>

上面這個和下面這兩種效果是一樣的,那么具體區別在哪呢?下面會給您解答。

這兩種起到的效果也是一樣的

很多老的 libc 的隨機數發生器具有一些不確定和未知的特性而且很慢。PHP 的 rand() 函數默認使用 libc 隨機數發生器。mt_rand() 函數是非正式用來替換它的。該函數用了 Mersenne Twister 中已知的特性作為隨機數發生器,mt_rand() 可以產生隨機數值的平均速度比 libc 提供的 rand() 快四倍。mt_rand()是更好地隨機數生成器,因為它跟rand()相比播下了一個更好地隨機數種子;而且性能上比rand()快4倍,mt_getrandmax()所表示的數值范圍也更大。

rand()和mt_rand()作用都是產生一個隨機整數,都有兩種使用形式:

int rand(void) / int mt_rand(void)

int rand(int $min, int $max) / int mt_rand($min, $max)

對第一種形式:

rand()產生的隨機數為0到getrandmax()之間

mt_rand()產生的隨機數為0到mt_getrandmax()之間

對第二種形式:

rand()產生從$min到$max之間的隨機數

mt_rand()產生從$min到$max之間的隨機數

PS.隨機浮點數的生成,在PHP手冊里還有一個demo

function randomFloat($min = 0, $max = 1) {

return $min + mt_rand() / mt_getrandmax() * ($max - $min);

}

var_dump(randomFloat());

var_dump(randomFloat(2, 20));

我們再來說說上面說的那兩個效果一樣的為什么要這樣做。

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

版權聲明:若無特殊注明,本文為《小傲世》原創,轉載請保留文章出處。

本文鏈接:https://pjax.vip/31.html

正文到此結束

總結

以上是生活随笔為你收集整理的php变量值随机,PHP生成各类随机数值的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。