java随机数函数_java随机函数详解
本文主要介紹java里的一些隨機函數實現與用法,也會附帶介紹一些隨機數知識。
目前計算機實現的隨機函數過程中,都是偽隨機的,不過,可以實現統計學意義上的隨機。比如手機鼠標移動位置,點擊,系統的參數等等作為種子,這種隨機統計上看起來就是“真隨機數”了,具有較高的安全性。當然對于多線程,仍然需要做一些討論。
關鍵字:隨機數,java,偽隨機數,種子, SecureRandom
1、分類
隨機數被準確地分成了三類:真隨機數、準隨機數、偽隨機數。那么這三種的區別是什么呢?書上的定義:
1)真隨機數 :產生的數不可預計,也不可能重復產生兩個相同的真隨機數序列。真隨機數只能通過某些隨機的物理過程來產生,如放射性衰變、電子設備的熱噪聲等。java里將一些不可測的因素引入,收集計算機的各種信息,如鍵盤輸入時間,CPU時鐘,內存使用狀態,硬盤空閑空間,IO延時,進程數量,線程數量等信息,來得到一個近似隨機的種子。我們暫且將這種隨機數稱為真隨機。比如linux里的/dev/random(會產生阻塞)與/dev/urandom(不會產生阻塞)
2)準隨機數:其隨機數序列不具備隨機性質,僅僅是用它來處理問題能夠得到正確的結果。分布相對于偽隨機數更為均勻。(參考本文底部 [2],[3])
3)偽隨機數:通過某種數學公式或者算法產生的數值序列。雖然在數學意義上偽隨機數是不隨機的,但是如果能夠通過統計檢驗,可以當成真隨機數使用。
本文討論的都是偽隨機數和真隨機數。偽隨機數生成器被稱為PRNG(Pseudo-random number generato
總結
以上是生活随笔為你收集整理的java随机数函数_java随机函数详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 北京市宣武门是哪个区
- 下一篇: java 线程安全的单例_线程安全的单例