• 周蓬安.blog的博客—强国博客—人民网 2019-05-10
  • 紫光阁中共中央国家机关工作委员会 2019-05-10
  • 感触名家笔下的端午文化吃香粽原来可以这样文艺 2019-05-09
  • 追梦夺冠游行嘲讽詹皇 百万人面前穿订制T恤羞辱他 2019-04-27
  • 《瘟疫传说》:黑死病恐怖 姐弟在绝望中求生 2019-04-10
  • 陕西国防工业职业技术学院百名大学生志愿者敬老院慰问孤寡老人陕西国防工业职业技术学院百名大学生志愿者敬老院慰问-陕西教育新闻 2019-04-08
  • 西藏拉萨:新家园 新生活 2019-04-08
  • 尊重和保障宗教信仰自由的中国实践 2019-04-06
  • 一敬泯恩仇 俄罗斯队主帅这个动作太暖了 2019-03-20
  • 四大名著剧组首次同台忆往事 经典影视剧如何铸就? 2018-12-07
  • “天眼”凝望 探秘宇宙 2018-12-07
  • 0

    PHP随机数生成的几种方法

    Posted by 撒得一地 on 2016年7月16日 in PHP笔记
    国外稳定加速器推荐    Express | Vypr

    在PHP开发中,有一些情况下可能要使用PHP生成随机数,PHP随机数的生成方法有很多。下面介绍常用的几种随机数的生成方法。

    1.使用PHP内置函数生成随机数

    使用PHP的内置函数可以自由的生成随机数,常见的函数有 mt_rand() 和 rand(),下面分别看下这两个函数的语法:

    rand()函数语法

    rand(min,max)
    

    参数

    min,max这两个参数可以省略。
    

    说明

    如果没有提供可选参数 min 和 max,rand() 返回 0 到 RAND_MAX 之间的伪随机整数。例如,想要 5 到 15(包括 5 和 15)之间的随机数,用 rand(5, 15)。

    某些平台下(例如 Windows)RAND_MAX 只有 32768。如果需要的范围大于 32768,那么指定 min 和 max 参数就可以生成大于 RAND_MAX 的数了,或者考虑用 mt_rand() 来替代它。

    实例:

    	<?php
    	   //生成随机数
    	   echo rand();
    
    	   //生成1-100内某个随机数
    	   echo rand(1,100);
    	?>
    

    mt_rand()函数语法

    mt_rand(min,max)
    

    说明

    如果没有提供可选参数 min 和 max,mt_rand() 返回 0 到 RAND_MAX 之间的伪随机数。例如想要 5 到 15(包括 5 和 15)之间的随机数,用 mt_rand(5, 15)。

    实例:

    	<?php
    	   echo mt_rand();
    	   echo "<br/>";
    	   echo mt_rand(100,200);
    	?>
    

    输出:
    13139999
    49

    两个函数比较:mt_rand() 比rand() 快四倍 。

    2.自定义函数生成指定长度的含数字、字母随机数(串)

    	/**
    	* 产生随机字符串
    	*
    	* @param    int        $length  输出长度 
    	* @param    string     $chars   可选的 ,默认为 0123456789abcdefghijklmnopqrstuvwxyz
    
    	* @return   string     字符串
    	*/
    
    	function random($length, $chars = '0123456789abcdefghijklmnopqrstuvwxyz') {
    	    $hash = '';
    	    $max = strlen($chars) - 1;
    
    	    for($i = 0; $i < $length; $i++) {
    	        $hash .= $chars[mt_rand(0, $max)];
    	    }
    	    return $hash;
    	}
    

    3.生成更复杂的随机字符串,字符包括^、#、%等特殊字符

    	function randomkeys($length){
    	    $output='';
    	    for($a=0;$a<$length; $a++){
    	        $output.=chr(mt_rand(33, 126));    
    	    }
    	    return $output;
    	}
    
    	echo randomkeys(20);
    /* 类似输出:EGztLufY\Eq/br{y!;>P */
    

    或者,使用下面这种方法生成随机字符串:

    	function keygen() {
    	  $tempstring =
    	  "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNO
    	  PQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyzABC
    	  [email protected]#$%&*[]{}();:,<>~+=-_
    	  /|\\";
    
    	  for($length = 0; $length < mt_rand(10, 15); $length++) {
    	   $temp = str_shuffle($tempstring);
    	   $char = mt_rand(0, strlen($temp));
    	   $pass .= $temp[$char];
    	  }
    	  return $pass;
    	}
    

    上面的这两种方法,都可以生成复杂的随机字符串,这些复杂的字符串还可以用做密码的使用等特殊用途。

    4.生成一个随机的 6 个字符的十六进制字符串

    	<?php
    	// generate a random number between 0 and 0xffffff
    	//生成0到0xffffff的一个随机数
    	$rand = mt_rand(0x000000, 0xffffff); 
    
    	// make sure we're not over 0xffffff, which shouldn't happen anyway
    
    	$rand = dechex($rand & 0xffffff); 
    	// add zeroes in front of the generated string
    
    	//如果有0确保0在首位
    	$rand = str_pad($rand, 6, '0', STR_PAD_LEFT); 
    	echo $rand;
    	?>
    

    类似输出:

    8514d2
    3188ae
    028f3e

    5.在连续的整数区间内,生成指定个数而且互不相同的随机数

    	function random_number_array($count, $from, $to){
    	   for($i=$from;$i<$to;$i++){
    	    $number_array[] = $i;
    	   }
    
    	   $random_number_array = array();
    
    	   mt_srand ((double) microtime() * 1000000);
    
    	   for($i=0;$i<$count;$i++){
    
    	      $random_number = mt_rand(0,count($number_array)-1);
    
    	      $key_to_insert_and_delete = array_search($random_number, $number_array);
    
    	      $random_number_array[$i] = $number_array[$key_to_insert_and_delete];
    
    	      array_splice($number_array, $key_to_insert_and_delete, 1);
    
    	   }
    
    	   // Array $random_number_array with $count random Numbers, between $from and $to
    	   return $random_number_array;
    	}
    	print_r(random_number_array(10,1,100));
    

    可能输出:

    	Array
    	(
    	    [0] => 17
    	    [1] => 40
    	    [2] => 72
    	    [3] => 91
    	    [4] => 36
    	    [5] => 14
    	    [6] => 1
    	    [7] => 62
    	    [8] => 47
    	    [9] => 65
    	)
    

    6.在一个指定范围内生成随机浮点数

    	function random_float ($min,$max) {
    	   return ($min+lcg_value()*(abs($max-$min)));
    	}
    	echo random_float(1,10);
    

    上一篇:

    下一篇:

    相关推荐

    发表评论

    电子邮件地址不会被公开。 必填项已用*标注

    9 + 4 = ?

    网站地图|广东快乐10分开奖直播

    Copyright © 2015-2019 广东快乐10分开奖直播 All rights reserved.
    闽ICP备15015576号-1,版权所有?psz.

  • 周蓬安.blog的博客—强国博客—人民网 2019-05-10
  • 紫光阁中共中央国家机关工作委员会 2019-05-10
  • 感触名家笔下的端午文化吃香粽原来可以这样文艺 2019-05-09
  • 追梦夺冠游行嘲讽詹皇 百万人面前穿订制T恤羞辱他 2019-04-27
  • 《瘟疫传说》:黑死病恐怖 姐弟在绝望中求生 2019-04-10
  • 陕西国防工业职业技术学院百名大学生志愿者敬老院慰问孤寡老人陕西国防工业职业技术学院百名大学生志愿者敬老院慰问-陕西教育新闻 2019-04-08
  • 西藏拉萨:新家园 新生活 2019-04-08
  • 尊重和保障宗教信仰自由的中国实践 2019-04-06
  • 一敬泯恩仇 俄罗斯队主帅这个动作太暖了 2019-03-20
  • 四大名著剧组首次同台忆往事 经典影视剧如何铸就? 2018-12-07
  • “天眼”凝望 探秘宇宙 2018-12-07
  • 天津时时彩销量大吗 义心彩票论坛交流 足彩竞猜网 体育彩票大乐透开奖 三d图迷总汇牛彩网 3d捕鱼 北京pk10单吊一码计划 安徽时时彩平台注册码是什么意思 北京赛车qq群 老时时彩综合走势图 注销pc蛋蛋 排列3字谜 北京pk10七码雪球计划 七乐彩46预测 湖南幸运赛车app pk10乐彩