Java生成随机数原理_JAVA随机数生成的机制
一般我們都稱計算機給的隨機數為偽隨機數,因為它們都不是真的隨機的。你可能更愿意相信這些情況。即使他們是隨機的,它們也在等待著我們的指示。當然也的確有些特定的方法,來生成它們。但我們可以聯想到某個黑盒或我們的面包機,而這是個隨機數生成器。于是你找到這個生成器說,嘿 生成器你發出一個信息,我得到了這個信息就是 下一個隨機數。而它會返回一個于你來說隨機的數,然后你說給我下一個 它又給你下一個。就是這么工作的。就想一個黑盒,你不管里面什么構造,對你來說就像是個面包機。
所以作為客戶,如何使用這些隨機數生成器呢?
你需要先導入隨機數生成器的庫,才能收獲隨機數生成器。
關于隨機數生成器,比較有意思的是,生成器和以往的類別不同。
當我們需要類的某個對象時,我們說new就會得到一個新的對象。
隨機數生成器有點不同,這里通過一個靜態方法來獲得實例對象,而不是通過new的構造器來生成。
此時有趣的是,當我們用到它時,我們希望能在所有方法里都是用同一個對象。所以你會說,你不是說過當我聲明一個變量,這個變量只能在它被聲明的方法內存在嗎,所以怎么辦?如果我們想要一個這種對象,我需要在每個方法內都調用一次嗎?答案是:不用,有一個辦法,如果我希望某個對象或變量,都能被我整個類別中的所以方法共用,我們就要用到 實例變量。
實例變量:意思就是,我想要一個存在于整個對象中的變量,而令所以方法都能指向這個相同的變量。
因此我們有必要比較一下實例變量和局部變量。關于他們如何被聲明,我們如何使用它們。它們的結構,以及為什么會使用它們。
實例變量是在類里面被聲明,而不是在方法里。
局部變量對應局部運算。
全局變量是一種很不好的數據類型,讓你們遠離它的方法,就是不告訴你們。
隨機數生成器的原理:很奇怪的是,當你找它要一個數,比方說它給你5,然后我們偷偷把生成器里的普通咖啡換成了咖啡片,它偷偷地干了什么呢?它偷偷地保存了這個數(5),并且將之用在某個復雜的方程中,而你不需要關心這個方程是如何的,因為生成下一個數字的是這個黑盒。當你需要下一個數時,它就會對5動手腳,而后給你新的東西。所以問題是,你不知道這個生成器從哪個數開始,實際上它從哪個數開始和你計算機上的時間有關,將一秒鐘60等分甚至千等分。所以大多數人不知道怎么回事,如果你不知道它怎么來的,你也就不知道這隨機數列是什么。唯一的問題是,如果你不知道它怎么來的,你運行了程序突然出錯了,第一次它在17的時候死機,你就想著要把這個錯誤找出來,于是你重新運行程序,這次你得到了個6,程序正常…我要你每次都用同一條序列的隨機數,就抓喲指定每次開始的那個數,那么你就能從這個數開始每次都生成同一序列的隨機數。如果開始的數是1,每次你說nextRandom,你得到的都是來自相同序列的隨機數,比如7、5、9、2、3。下次運行時還是這個序列,這樣調試起來就很輕松了。
Q&A:
seed不定要在區間內,多數情況下 seed的值是完全不相關的,基本上你在調試時才把它加進去。當你程序能運行時,把它拿出來。看看程序是否還運行。
如果在不同的計算機上用相同的seed,會得到相同的序列嗎?
答案是YES.
總結
以上是生活随笔為你收集整理的Java生成随机数原理_JAVA随机数生成的机制的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: polyfit线性拟合函数
- 下一篇: 一棵树的生物量怎么算_2019玩花园 |