最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

分析講解Java?Random類里的種子問題

 更新時間:2022年05月13日 11:45:09   作者:星辰與晨曦  
Random類中實現(xiàn)的隨機算法是偽隨機,也就是有規(guī)則的隨機。在進行隨機時,隨機算法的起源數(shù)字稱為種子數(shù)(seed),在種子數(shù)的基礎上進行一定的變換,從而產(chǎn)生需要的隨機數(shù)字

可以說在現(xiàn)在的計算機語言里面,以及普通用戶這里,都是沒有辦法獲得真正的 隨機數(shù)的。真正的隨機數(shù)現(xiàn)在也只有在量子計算機當中才有獲得。

所以我們現(xiàn)在所說的隨機數(shù),也可以稱為偽隨機數(shù),偽隨機數(shù)是通過一種算法并且結合當下一個有規(guī)律其不斷改變的數(shù)(比如時間)獲得的結果。

我們將這種通過算法集合時間作為初始獲得隨機數(shù)的基準的數(shù)據(jù)稱為種子。

Java當中創(chuàng)建隨機數(shù)的方式是有兩種的:

第以種就是直接創(chuàng)建Random對象

Random random = new Random();

在底層就會調(diào)用這個方法來得到種子:

第二種就是將自己創(chuàng)建的種子傳進去:

Random random = new Random(5);

在源碼里我們可以直接看出種子的數(shù)據(jù)類型為long型,是長整形。

所以我們現(xiàn)在就有一種辦法,在它最開始生成Random對象的時候,獲得它生成的種子,然后將獲得的種子又傳入創(chuàng)建Random的對象當中。是不是就可以獲得上面一模一樣的隨機數(shù)了?

先拿java語言來實現(xiàn)一下:

import java.util.Random;

public class Demo02 {
    public static void main(String[] args) {
        Random random = new Random(5);//在這將5作為種子傳入
        System.out.println("第一次調(diào)用:");
        for (int i = 0; i < 5; i++) {
            System.out.print(random.nextInt(10) + "\t");
            //獲得10以內(nèi)的隨機數(shù)(不包括10)
        }
        random.setSeed(5);//在這再將種子5傳入Random的種子當中
        System.out.println("\n第二次調(diào)用:");
        for (int i = 0; i < 5; i++) {
            System.out.print(random.nextInt(10) + "\t");
        }
    }
}

在這明顯的看出,這個隨機數(shù)是一點都不隨機的。兩次只要種子一樣,就能返回相同的結果。

在這我再用python語言在實現(xiàn)一次這個功能(主要是java當中沒有能調(diào)用輸出當前種子的方法)。用python有一個更好的理解。

在python里面我會更加詳細的寫清注釋,詳細不會很難理解不了的。

import random  #導入random內(nèi)庫
x = random.getstate()  # 獲得當前random里的種子
print('第一次循環(huán):') #輸入語句
for i in range(5):
    #for循環(huán)  for i in range(5)  ===》 for (int i = 0; i < 5; i++)
    #在python里面并沒喲什么大括號去吧什么括起來,而是要注意鎖定,一個鎖定就是一個整體
    print(random.randint(1, 10), end='\t')
    #random.randint(1, 10)生成1~10(不包括10)的隨機數(shù),
    # end='\t'表示當前print沒有結束,還有一個制表符的鍵位,也就不換行了
print('\n第二次循環(huán)')
random.setstate(x)#將上面獲得的種子再次傳入進去
for i in range(5): #這里和上面一樣,循環(huán)出5次
    print(random.randint(1, 10), end='\t')

到此這篇關于分析講解Java Random類里的種子問題的文章就介紹到這了,更多相關Java Random類種子問題內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

最新評論

石家庄市| 德格县| 乌拉特后旗| 扎赉特旗| 桐柏县| 长葛市| 方正县| 铜山县| 大洼县| 葵青区| 甘孜县| 航空| 济源市| 河津市| 隆回县| 葵青区| 读书| 铜陵市| 从化市| 秦安县| 射阳县| 宜春市| 双桥区| 思茅市| 永仁县| 芦山县| 大竹县| 琼海市| 普宁市| 湖北省| 丹东市| 兰坪| 崇信县| 临沭县| 长宁区| 富锦市| 柳河县| 休宁县| 雷山县| 潢川县| 东乌珠穆沁旗|