日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > java >内容正文

java

Java生成随机数原理_JAVA随机数生成的机制

發(fā)布時(shí)間:2024/8/1 java 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java生成随机数原理_JAVA随机数生成的机制 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一般我們都稱計(jì)算機(jī)給的隨機(jī)數(shù)為偽隨機(jī)數(shù),因?yàn)樗鼈兌疾皇钦娴碾S機(jī)的。你可能更愿意相信這些情況。即使他們是隨機(jī)的,它們也在等待著我們的指示。當(dāng)然也的確有些特定的方法,來(lái)生成它們。但我們可以聯(lián)想到某個(gè)黑盒或我們的面包機(jī),而這是個(gè)隨機(jī)數(shù)生成器。于是你找到這個(gè)生成器說,嘿 生成器你發(fā)出一個(gè)信息,我得到了這個(gè)信息就是 下一個(gè)隨機(jī)數(shù)。而它會(huì)返回一個(gè)于你來(lái)說隨機(jī)的數(shù),然后你說給我下一個(gè) 它又給你下一個(gè)。就是這么工作的。就想一個(gè)黑盒,你不管里面什么構(gòu)造,對(duì)你來(lái)說就像是個(gè)面包機(jī)。

所以作為客戶,如何使用這些隨機(jī)數(shù)生成器呢?

你需要先導(dǎo)入隨機(jī)數(shù)生成器的庫(kù),才能收獲隨機(jī)數(shù)生成器。

關(guān)于隨機(jī)數(shù)生成器,比較有意思的是,生成器和以往的類別不同。

當(dāng)我們需要類的某個(gè)對(duì)象時(shí),我們說new就會(huì)得到一個(gè)新的對(duì)象。

隨機(jī)數(shù)生成器有點(diǎn)不同,這里通過一個(gè)靜態(tài)方法來(lái)獲得實(shí)例對(duì)象,而不是通過new的構(gòu)造器來(lái)生成。

此時(shí)有趣的是,當(dāng)我們用到它時(shí),我們希望能在所有方法里都是用同一個(gè)對(duì)象。所以你會(huì)說,你不是說過當(dāng)我聲明一個(gè)變量,這個(gè)變量只能在它被聲明的方法內(nèi)存在嗎,所以怎么辦?如果我們想要一個(gè)這種對(duì)象,我需要在每個(gè)方法內(nèi)都調(diào)用一次嗎?答案是:不用,有一個(gè)辦法,如果我希望某個(gè)對(duì)象或變量,都能被我整個(gè)類別中的所以方法共用,我們就要用到 實(shí)例變量。

實(shí)例變量:意思就是,我想要一個(gè)存在于整個(gè)對(duì)象中的變量,而令所以方法都能指向這個(gè)相同的變量。

因此我們有必要比較一下實(shí)例變量和局部變量。關(guān)于他們?nèi)绾伪宦暶?#xff0c;我們?nèi)绾问褂盟鼈儭K鼈兊慕Y(jié)構(gòu),以及為什么會(huì)使用它們。

實(shí)例變量是在類里面被聲明,而不是在方法里。

局部變量對(duì)應(yīng)局部運(yùn)算。

全局變量是一種很不好的數(shù)據(jù)類型,讓你們遠(yuǎn)離它的方法,就是不告訴你們。

隨機(jī)數(shù)生成器的原理:很奇怪的是,當(dāng)你找它要一個(gè)數(shù),比方說它給你5,然后我們偷偷把生成器里的普通咖啡換成了咖啡片,它偷偷地干了什么呢?它偷偷地保存了這個(gè)數(shù)(5),并且將之用在某個(gè)復(fù)雜的方程中,而你不需要關(guān)心這個(gè)方程是如何的,因?yàn)樯上乱粋€(gè)數(shù)字的是這個(gè)黑盒。當(dāng)你需要下一個(gè)數(shù)時(shí),它就會(huì)對(duì)5動(dòng)手腳,而后給你新的東西。所以問題是,你不知道這個(gè)生成器從哪個(gè)數(shù)開始,實(shí)際上它從哪個(gè)數(shù)開始和你計(jì)算機(jī)上的時(shí)間有關(guān),將一秒鐘60等分甚至千等分。所以大多數(shù)人不知道怎么回事,如果你不知道它怎么來(lái)的,你也就不知道這隨機(jī)數(shù)列是什么。唯一的問題是,如果你不知道它怎么來(lái)的,你運(yùn)行了程序突然出錯(cuò)了,第一次它在17的時(shí)候死機(jī),你就想著要把這個(gè)錯(cuò)誤找出來(lái),于是你重新運(yùn)行程序,這次你得到了個(gè)6,程序正常…我要你每次都用同一條序列的隨機(jī)數(shù),就抓喲指定每次開始的那個(gè)數(shù),那么你就能從這個(gè)數(shù)開始每次都生成同一序列的隨機(jī)數(shù)。如果開始的數(shù)是1,每次你說nextRandom,你得到的都是來(lái)自相同序列的隨機(jī)數(shù),比如7、5、9、2、3。下次運(yùn)行時(shí)還是這個(gè)序列,這樣調(diào)試起來(lái)就很輕松了。

Q&A:

seed不定要在區(qū)間內(nèi),多數(shù)情況下 seed的值是完全不相關(guān)的,基本上你在調(diào)試時(shí)才把它加進(jìn)去。當(dāng)你程序能運(yùn)行時(shí),把它拿出來(lái)。看看程序是否還運(yùn)行。

如果在不同的計(jì)算機(jī)上用相同的seed,會(huì)得到相同的序列嗎?

答案是YES.

總結(jié)

以上是生活随笔為你收集整理的Java生成随机数原理_JAVA随机数生成的机制的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。