php随机数

PHP生成N个不重复的随机数

浪尽此生 提交于 2020-03-15 17:49:44
原理就是将数组顺序随即打乱 ,然取该数组中的某一段 方法1: <?php //range 是将1到100 列成一个数组 $numbers = range (1,100); //shuffle 将数组顺序随即打乱 shuffle ($numbers); //array_slice 取该数组中的某一段 $result = array_slice($numbers,0,3); print_r($result); ?> 方法2: <?php $numbers = range (1,20); srand ((float)microtime()*1000000); shuffle ($numbers); while (list (, $number) = each ($numbers)) { echo "$number "; } ?> 方法3: 用PHP,在1-20间随机产生5个不重复的值 <?php function NoRand($begin=0,$end=20,$limit=5){ $rand_array=range($begin,$end); shuffle($rand_array);//调用现成的数组随机排列函数 return array_slice($rand_array,0,$limit);//截取前$limit个 } print_r(NoRand()); ?>

php随机函数mt_rand()产生的小问题大漏洞

陌路散爱 提交于 2019-11-26 02:33:55
**说到随机函数的应用,作为一个菜鸟,理解的也不是很深刻,在这里之作为一个笔记来记录,以后慢慢将其掌握之后,再在内容上面进行加深。 随机函数的作用,常常是用来生成验证码、随机文件名、订单号,如果用来做安全验证的话常常用来生成加密key、token等等。** 一、常见的随机函数 1、rand() 常用的随机函数,默认生成0-getrandmax()之间的随机数,不过因为性能问题,已经被mt_rand()函数替代 相关函数: rand(int $min,int $max) srand(int $seed),生成时间种子,同一个时间种子下随机生成的随机数值是相同的。 getrandmax()获取最大随机数,这里获取的随机数会随系统的不同而不同。如linux最大2147483647 2、mt_rand 常用的随机函数,默认生成0-mt_getrandmax()之间的随机数, Mersenne Twister 算法生成随机整数 相关函数: mt_srand(),生成种子,同一个种子下随机生成的随机数值是相同的。 该函数是产生随机值的更好选择,返回结果的速度是 rand() 函数的 4 倍(手册是是这么写的),我个人并不认同的,我感觉他说的4倍是很多年前的事了。因为mt_rand()使用的Mersenne Twister algorythm是1997的事,所以在很多年前,和rand(