国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 語(yǔ)言 > PHP > 正文

PHP也能干大事 隨機(jī)函數(shù)

2024-09-04 11:42:45
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

寫(xiě)在前面:PHP也能干大事是我總結(jié)的PHP語(yǔ)法特性及相關(guān)函數(shù)類(lèi)庫(kù)的經(jīng)典用法,并不一定是真正能實(shí)現(xiàn)四兩撥千斤的功效,但是掌握這些方法,可以在你的工作和學(xué)習(xí)上有一些幫助,希望大家能集思廣益,將《PHP也能干大事》豐富得更精彩!轉(zhuǎn)載請(qǐng)注明出處(3mc2.com)

二、前言

PHP是常見(jiàn)的腳本語(yǔ)言,主要是因?yàn)槠浜?jiǎn)單易學(xué),上手快,幾乎50%以上的Web程序都有PHP的身影(不完全統(tǒng)計(jì))。PHP為開(kāi)發(fā)這提供了豐富的函數(shù)和API接口,這使得我們能夠非常方便地使用其強(qiáng)大的內(nèi)置函數(shù)及擴(kuò)展,本文是《PHP也能干大事》系列的第二篇,主要總結(jié)PHP在隨機(jī)數(shù)生成器方面的知識(shí)。

三、PHP隨機(jī)函數(shù)

PHP隨機(jī)函數(shù)主要有rand、mt_rand、array_rand,還有隨機(jī)“排列”(打亂順序)的函數(shù)shuffle、str_shuffle,能夠產(chǎn)生唯一ID的uniqid。

1、rand產(chǎn)生隨機(jī)數(shù):

  1. <?php 
  2. $base = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'
  3. $count = strlen($base); 
  4. $random = ''
  5. for ($i=0; $i < 16; $i++) {  
  6.  $random.=$base[rand(0,$count-1)]; 
  7. echo $random
  8. ?> 

rand()函數(shù)是使用libc 的隨機(jī)數(shù)發(fā)生器生成隨機(jī)數(shù)的,一般較慢,且有不確定因素,建議使用mt_rand函數(shù)替代。

getrandmax()函數(shù)可以返回rand函數(shù)能夠產(chǎn)生的最大的隨機(jī)數(shù)(我的系統(tǒng)為32767),所以在設(shè)置rand函數(shù)第二個(gè)參數(shù)時(shí)不要超高getrandmax的返回值。

2、mt_rand產(chǎn)生隨機(jī)數(shù):

  1. <?php 
  2. $base = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'
  3. $count = strlen($base); 
  4. $random = ''
  5. for ($i=0; $i < 16; $i++) {  
  6.  $random.=$base[mt_rand(0,$count-1)]; 
  7. echo $random
  8. ?> 

很多老的 libc 的隨機(jī)數(shù)發(fā)生器具有一些不確定和未知的特性而且很慢。PHP 的 rand() 函數(shù)默認(rèn)使用 libc 隨機(jī)數(shù)發(fā)生器。mt_rand() 函數(shù)是非正式用來(lái)替換它的。該函數(shù)用了 » Mersenne Twister 中已知的特性作為隨機(jī)數(shù)發(fā)生器,它可以產(chǎn)生隨機(jī)數(shù)值的平均速度比 libc 提供的 rand() 快四倍。強(qiáng)烈建議在開(kāi)發(fā)過(guò)程中使用mt_rand函數(shù)取代rand。

如果沒(méi)有提供可選參數(shù) min 和 max,mt_rand() 返回 0 到 mt_getrandmax() 之間的偽隨機(jī)數(shù)。例如想要 3到 20(包括 3 和 20)之間的隨機(jī)數(shù),用 mt_rand(3, 20)。

3、array_rand函數(shù)

  1. <?php 
  2. $base = array('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','0','1','2','3','4','5','6','7','8','9'); 
  3.    
  4. $random = ''
  5. for ($i=0; $i < 16; $i++) {  
  6.  $random.=$base[array_rand($base)]; 
  7. echo $random
  8. ?> 

array_rand返回?cái)?shù)組中隨機(jī)的鍵值,有點(diǎn)類(lèi)似mt_rand()函數(shù),其余的沒(méi)什么特殊的地方,靈活運(yùn)用而已。

4、shuffle函數(shù)

  1. <?php 
  2. $base = array('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','0','1','2','3','4','5','6','7','8','9'); 
  3. if(shuffle($base)){ 
  4.  print_r($base); 
  5. ?> 

shuffle函數(shù)是打亂一個(gè)數(shù)組的序列,有點(diǎn)隨機(jī)的意思,這里就放在隨機(jī)函數(shù)里了。返回值為bool值,相當(dāng)于直接引用了原變量。

5、str_shuffle函數(shù)

  1. <?php 
  2. $base = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'
  3. echo str_shuffle($base); 
  4. ?> 

這里str_shuffle的功能和shuffle的功能是類(lèi)似的,唯一不同的是返回值,str_shuffle的原字符串是不變的。

6、uniqid函數(shù)

  1. <?php 
  2. echo uniqid(); 
  3. //54f806528172f 
  4. ?> 

uniqid能夠產(chǎn)生唯一的字符串,這個(gè)應(yīng)用的范圍可以相當(dāng)廣泛

四、總結(jié)

隨機(jī)函數(shù)幾乎是每種語(yǔ)言最基本的功能,PHP對(duì)于隨機(jī)函數(shù)的支持也不例外,這里介紹了rand、mt_rand、array_rand、shuffle、str_shuffle、uniqid函數(shù)的基本用法,更多可以結(jié)合實(shí)際應(yīng)用靈活運(yùn)用。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 怀集县| 克山县| 华安县| 大竹县| 类乌齐县| 栾川县| 资中县| 崇仁县| 依兰县| 邻水| 湟源县| 博湖县| 隆昌县| 霍林郭勒市| 华坪县| 乐亭县| 清流县| 岗巴县| 阿拉尔市| 黔江区| 崇阳县| 内黄县| 鹤峰县| 肇源县| 米泉市| 济阳县| 汉沽区| 英吉沙县| 白水县| 商都县| 陇川县| 合肥市| 韩城市| 大名县| 青冈县| 永吉县| 吉安市| 呼伦贝尔市| 大港区| 横峰县| 安塞县|