如何自定義隨機數函數?

隨機數函數的原理是什麼,怎麼實現,可以用php、js、c、java等編程語言實現,用原生的寫法實現,而不是自帶的方法函數


建議參考 [1]。

[1] Knuth, Donald E. "Chapter 3 (" Random Numbers") in Volume 2 (" Seminumerical Algorithms") of" The Art of Computer Programming." (1969).


偽隨機數生成演算法常用的有五六種,一共有至少十來種。閑了專欄文章專門講這個。


自己去看源碼。。。


最基本的有m序列和元胞自動機

不過呢,隨機性要做好並不容易


php的隨機數mt_rand,演算法是梅森旋轉演算法,python貌似也是這種演算法


我記得有兩種比較簡單巧妙的偽隨機數發生器設計

一是,用生態學中的蟲口模型,也叫logistics模型

二是,用一或多種一維元胞自動機


int getRandomNumber(){

return 4; //choose by a fair dice roll

//guaranteed to be random

}


推薦閱讀:

怎樣理解或評價面向對象的編程技術?
如何從零基礎做出類似拳皇一類的動作類2D遊戲?
SPFA演算法可否取代Dijkstra演算法成為計算單源最短路徑的最優解?
彙編指令集與cpu指令集是什麼關係?
Hash時取模一定要模質數嗎?

TAG:PHP | 編程 | Java | 隨機數學 | 隨機數發生器 |