2018/9/13
- mt_rand()函数
说明:
int mt_rand( void )
int mt_rand ( int $min , int $max )
mt_rand()函数用户生成一个随机整数,可指定min和max,用法以及功能和rand()函数相同,但是与rand()函数不同的是mt_rand()函数生成随机数的平均速度是rand()函数的4倍,原因是因为rand()函数使用的老lidc随机数发生器具有一些不确定和未知的特性,而且速度很慢,而mt_rand()函数使用的是Mersenne Twister中已知的特性作为随机数发生器。
- Mersenne Twister 梅森旋转算法
以下摘自维基百科:
简介:
梅森旋转算法(Mersenne twister)是一个伪随机数发生算法。由松本真和西村拓士[1]在1997年开发,基于有限二进制字段上的矩阵线性递归 {\displaystyle F_{2}} F_{{2}}。可以快速产生高质量的伪随机数,修正了古典随机数发生算法的很多缺陷。
优点:
1. 周期非常长,达到219937−1。尽管如此长的周期并不必然意味着高质量的伪随机数,但短周期(比如许多旧版本软件包提供的232)确实会带来许多问题。
2. 在1 ≤ k ≤ 623的维度之间都可以均等分布。
3. 除了在统计学意义上的不正确的随机数生成器以外,在所有伪随机数生成器法中是最快的(当时)。
缺点:
为了性能,这个算法付出了巨大的空间成本(当时而言):需要 2.5 KiB 的缓存空间。2011年,松本真和西村拓士针对这一问题提出了一个更小的版本,仅占127 bits(1字节/Byte = 8比特/bit)的 TinyMT (Tiny Mersenne Twister)。
- sprintf()函数
说明:
sprintf( str $format , $arg1 , $arg2 , $arg++)
sprintf() 函数把格式化的字符串写入变量中。
arg1、arg2、++ 参数将被插入到主字符串中的百分号(%)符号处。该函数是逐步执行的。在第一个 % 符号处,插入 arg1,在第二个 % 符号处,插入 arg2,依此类推。