-
當(dāng)前位置:首頁 > 創(chuàng)意學(xué)院 > 營銷推廣 > 專題列表 > 正文
強(qiáng)偽隨機(jī)數(shù)安全嗎
大家好!今天讓創(chuàng)意嶺的小編來大家介紹下關(guān)于強(qiáng)偽隨機(jī)數(shù)安全嗎的問題,以下是小編對此問題的歸納整理,讓我們一起來看看吧。
開始之前先推薦一個(gè)非常厲害的Ai人工智能工具,一鍵生成原創(chuàng)文章、方案、文案、工作計(jì)劃、工作報(bào)告、論文、代碼、作文、做題和對話答疑等等
只需要輸入關(guān)鍵詞,就能返回你想要的內(nèi)容,有小程序、在線網(wǎng)頁版、PC客戶端和批量生成器
問友Ai官網(wǎng):https://ai.de1919.com。
本文目錄:
為什么說Java中的隨機(jī)數(shù)都是偽隨機(jī)數(shù)
什么是偽隨機(jī)數(shù)?1.偽隨機(jī)數(shù)是看似隨機(jī)實(shí)質(zhì)是固定的周期性序列,也就是有規(guī)則的隨機(jī)。
2.只要這個(gè)隨機(jī)數(shù)是由確定算法生成的,那就是偽隨機(jī),只能通過不斷算法優(yōu)化,使你的隨機(jī)數(shù)更接近隨機(jī)。
(隨機(jī)這個(gè)屬性和算法本身就是矛盾的)
3.通過真實(shí)隨機(jī)事件取得的隨機(jī)數(shù)才是真隨機(jī)數(shù)。
Java隨機(jī)數(shù)產(chǎn)生原理:
Java的隨機(jī)數(shù)產(chǎn)生是通過線性同余公式產(chǎn)生的,也就是說通過一個(gè)復(fù)雜的算法生成的。
偽隨機(jī)數(shù)的不安全性:
Java自帶的隨機(jī)數(shù)函數(shù)是很容易被黑客綠色的,因?yàn)楹诳涂梢酝ㄟ^獲取一定長度的隨機(jī)數(shù)序列來推出你的seed,然后就可以預(yù)測下一個(gè)隨機(jī)數(shù)。
不用種子的不隨機(jī)性會(huì)增大的原因:
java.Math.Random()實(shí)際是在內(nèi)部調(diào)用java.util.Random()的,使用一個(gè)和當(dāng)前系統(tǒng)時(shí)間有關(guān)的數(shù)字作為種子數(shù)。兩個(gè)隨機(jī)數(shù)就很可能相同。
double a = Math.random();
double b = Math.random();
Random r1 = new Random();
r1.nextInt(10);
Random r2 = new Random();
r2.nextInt(10);
Java中產(chǎn)生隨機(jī)數(shù)的方法有兩種:
第一種:Math.random()
第二種:new Random()
一、java.lang.Math.Random:
調(diào)用這個(gè)Math.Random()函數(shù)能夠返回帶正號(hào)的double值,取值范圍是[0.0,1.0),在該范圍內(nèi)(近似)均勻分布。因?yàn)榉祷刂凳莇ouble類型的,小數(shù)點(diǎn)后面可以保留15位小數(shù),所以產(chǎn)生相同的可能性非常小,在這一定程度上是隨機(jī)數(shù)。
二、java.util.Random:
Random r1 = new Random();
Random r2 = new Random();
Random r3 = new Random(10);
Random r4 = new Random(10);
下面Random()的兩種構(gòu)造方法:
Random():使用一個(gè)和當(dāng)前系統(tǒng)時(shí)間對應(yīng)的相對時(shí)間有關(guān)的數(shù)字作為種子數(shù)。
Random(long seed):直接傳入一個(gè)種子數(shù)。
種子的作用是什么?
種子就是產(chǎn)生隨機(jī)數(shù)的第一次使用值,機(jī)制是通過一個(gè)函數(shù),將這個(gè)種子的值轉(zhuǎn)化為隨機(jī)數(shù)空間中的某一個(gè)點(diǎn)上,并且產(chǎn)生的隨機(jī)數(shù)均勻的散布在空間中。以后產(chǎn)生的隨機(jī)數(shù)都與前一個(gè)隨機(jī)數(shù)有關(guān)。
舉例:
Random r =new Random(100);
System.out.println(r.nextInt(20));
種子數(shù)只是隨機(jī)算法的起源數(shù)字,和生成的隨機(jī)數(shù)字的區(qū)間沒有任何關(guān)系。
初始化時(shí)100并沒有起直接作用(注意:不是沒有起作用),r.nextInt(20)中的20是隨機(jī)數(shù)的上限,產(chǎn)生的隨機(jī)數(shù)為0-20的整數(shù),不包括20。
以上就是關(guān)于強(qiáng)偽隨機(jī)數(shù)安全嗎相關(guān)問題的回答。希望能幫到你,如有更多相關(guān)問題,您也可以聯(lián)系我們的客服進(jìn)行咨詢,客服也會(huì)為您講解更多精彩的知識(shí)和內(nèi)容。
推薦閱讀:
庭院花園設(shè)計(jì)公司(庭院花園設(shè)計(jì)公司長沙)