工作筆記

2018/9/13

  1. 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中已知的特性作爲隨機數發生器。

  1. 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)。

  1. sprintf()函數

說明:
sprintf( str $format , $arg1 , $arg2 , $arg++)

sprintf() 函數把格式化的字符串寫入變量中。
arg1、arg2、++ 參數將被插入到主字符串中的百分號(%)符號處。該函數是逐步執行的。在第一個 % 符號處,插入 arg1,在第二個 % 符號處,插入 arg2,依此類推。

詳細文檔

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章