欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

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

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

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

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

Random random = new Random();

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

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

Random random = new Random(5);

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

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

先拿java語言來實(shí)現(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)的隨機(jī)數(shù)(不包括10)
        }
        random.setSeed(5);//在這再將種子5傳入Random的種子當(dāng)中
        System.out.println("\n第二次調(diào)用:");
        for (int i = 0; i < 5; i++) {
            System.out.print(random.nextInt(10) + "\t");
        }
    }
}

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

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

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

import random  #導(dǎo)入random內(nèi)庫
x = random.getstate()  # 獲得當(dāng)前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里面并沒喲什么大括號(hào)去吧什么括起來,而是要注意鎖定,一個(gè)鎖定就是一個(gè)整體
    print(random.randint(1, 10), end='\t')
    #random.randint(1, 10)生成1~10(不包括10)的隨機(jī)數(shù),
    # end='\t'表示當(dāng)前print沒有結(jié)束,還有一個(gè)制表符的鍵位,也就不換行了
print('\n第二次循環(huán)')
random.setstate(x)#將上面獲得的種子再次傳入進(jìn)去
for i in range(5): #這里和上面一樣,循環(huán)出5次
    print(random.randint(1, 10), end='\t')

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

相關(guān)文章

  • MyBatis?Plus?導(dǎo)入IdType失敗的解決

    MyBatis?Plus?導(dǎo)入IdType失敗的解決

    這篇文章主要介紹了MyBatis?Plus?導(dǎo)入IdType失敗的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • Java內(nèi)存釋放實(shí)現(xiàn)代碼案例

    Java內(nèi)存釋放實(shí)現(xiàn)代碼案例

    這篇文章主要介紹了Java內(nèi)存釋放實(shí)現(xiàn)代碼案例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-12-12
  • Java 添加、更新和移除PDF超鏈接的實(shí)現(xiàn)方法

    Java 添加、更新和移除PDF超鏈接的實(shí)現(xiàn)方法

    PDF超鏈接用一個(gè)簡(jiǎn)單的鏈接包含了大量的信息,滿足了人們?cè)诓徽加锰嗫臻g的情況下渲染外部信息的需求。這篇文章主要介紹了Java 添加、更新和移除PDF超鏈接的實(shí)現(xiàn)方法,需要的朋友可以參考下
    2019-05-05
  • SpringBoot集成Swagger2實(shí)現(xiàn)Restful(類型轉(zhuǎn)換錯(cuò)誤解決辦法)

    SpringBoot集成Swagger2實(shí)現(xiàn)Restful(類型轉(zhuǎn)換錯(cuò)誤解決辦法)

    這篇文章主要介紹了SpringBoot集成Swagger2實(shí)現(xiàn)Restful(類型轉(zhuǎn)換錯(cuò)誤解決辦法),需要的朋友可以參考下
    2017-07-07
  • Java實(shí)現(xiàn)圖書館借閱系統(tǒng)

    Java實(shí)現(xiàn)圖書館借閱系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)圖書館借閱系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • Spring整合Mybatis使用<context:property-placeholder>時(shí)的坑

    Spring整合Mybatis使用<context:property-placeholder>時(shí)的坑

    這篇文章主要介紹了Spring整合Mybatis使用<context:property-placeholder>時(shí)的坑 的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-06-06
  • Springboot集成任務(wù)調(diào)度實(shí)現(xiàn)過程

    Springboot集成任務(wù)調(diào)度實(shí)現(xiàn)過程

    這篇文章主要介紹了Springboot集成任務(wù)調(diào)度實(shí)現(xiàn)過程,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04
  • Java Pattern與Matcher字符串匹配案例詳解

    Java Pattern與Matcher字符串匹配案例詳解

    這篇文章主要介紹了Java Pattern與Matcher字符串匹配案例詳解,本篇文章通過簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-09-09
  • Spring中的AOP操作你了解嗎

    Spring中的AOP操作你了解嗎

    這篇文章主要為大家詳細(xì)介紹了Spring中的AOP操作,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-02-02
  • SpringMVC 中文亂碼的解決方案

    SpringMVC 中文亂碼的解決方案

    這篇文章主要介紹了SpringMVC 中文亂碼的解決方案,幫助大家更好的理解和學(xué)習(xí)使用SpringMVC,感興趣的朋友可以了解下
    2021-04-04

最新評(píng)論