大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節(jié)點(diǎn)LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 hot資訊 Java隨機(jī)數(shù)生成器的實(shí)現(xiàn)

Java隨機(jī)數(shù)生成器的實(shí)現(xiàn)

更新時間:2021-05-24 09:00:00 來源:動力節(jié)點(diǎn) 瀏覽1139次

java.lang.Math.Random

調(diào)用這個Math.Random()函數(shù)可以返回帶正號的double值,取值范圍是[0.0,1.0)的左閉右開區(qū)間,并在該范圍內(nèi)(近似)均勻分布。java

java.util.Random

經(jīng)常使用函數(shù)

protected int next(int bits):生成下一個偽隨機(jī)數(shù)。

boolean nextBoolean():返回下一個偽隨機(jī)數(shù),它是取自此隨機(jī)數(shù)生成器序列的均勻分布的boolean值。

void nextBytes(byte[] bytes):生成隨機(jī)字節(jié)并將其置于用戶提供的 byte 數(shù)組中。

double nextDouble():返回下一個偽隨機(jī)數(shù),它是取自此隨機(jī)數(shù)生成器序列的、在0.0和1.0之間均勻分布的 double值。

float nextFloat():返回下一個偽隨機(jī)數(shù),它是取自此隨機(jī)數(shù)生成器序列的、在0.0和1.0之間均勻分布float值。

double nextGaussian():返回下一個偽隨機(jī)數(shù),它是取自此隨機(jī)數(shù)生成器序列的、呈高斯(“正態(tài)”)分布的double值,其平均值是0.0標(biāo)準(zhǔn)差是1.0。

int nextInt():返回下一個偽隨機(jī)數(shù),它是此隨機(jī)數(shù)生成器的序列中均勻分布的 int 值。

int nextInt(int n):返回一個偽隨機(jī)數(shù),它是取自此隨機(jī)數(shù)生成器序列的、在(包括和指定值(不包括)之間均勻分布的int值。

long nextLong():返回下一個偽隨機(jī)數(shù),它是取自此隨機(jī)數(shù)生成器序列的均勻分布的 long 值。

void setSeed(long seed):使用單個 long 種子設(shè)置此隨機(jī)數(shù)生成器的種子。

構(gòu)造函數(shù)

public Random() 該構(gòu)造方法使用一個和當(dāng)前系統(tǒng)時間對應(yīng)的相對時間有關(guān)的數(shù)字做為種子數(shù),而后使用這個種子數(shù)構(gòu)造Random對象。

public Random(long seed) 該構(gòu)造方法能夠經(jīng)過制定一個種子數(shù)進(jìn)行建立。

總結(jié):

種子數(shù)只是隨機(jī)算法的起源數(shù)字,和生成的隨機(jī)數(shù)字的區(qū)間無關(guān);相同種子數(shù)的Random對象,相同次數(shù)生成的隨機(jī)數(shù)字是徹底相同的;

生成[0,n)區(qū)間的數(shù)有公式Math.abs(nextInt()%n)和nextInt(n)

生成任意區(qū)間[a,b),公式nextInt(b-a)+a和Math.abs(nextInt()%(b-a)+a

生成任意區(qū)間[a,b],公式nextInt(b+1-a)+a和Math.abs(nextInt()%(b+1-a)+a)

示例代碼:算法

package com.random;
import java.util.Random;
import org.junit.After;
import org.junit.Assert;
import org.junit.BeforeClass;
import org.junit.Ignore;
import org.junit.Test;
public class testRandom {
    private static Random r1;
    private static Random r2;
    /**
     * @Title: loadUp
     * @Description: 測試以前的初始化工做
     */
    @BeforeClass
    public static void loadUp() {
        r1 = new Random(10);
        r2 = new Random(10);
    }
    @After
    public void testAfter() {
        System.out.println("------------------------>");
    }
    /**
     * @Title: testMathRandom
     * @Description: 經(jīng)過Math.random產(chǎn)生[0,5)之間的數(shù)
     * @throws
     */
    @Ignore
    @Test
    public void testMathRandom() {
        for (int i = 0; i < 20; i++) {
            System.out.println((int) (Math.random() * 5));
        }
    }
    /**
     * @Title: testTwoRandom
     * @Description: 兩個random對象,具備相同的種子,會產(chǎn)生相同的隨機(jī)數(shù)(偽隨機(jī))
     */
    @Test
    public void testTwoRandom() {
        for (int i = 0; i < 10; ++i) {
            Assert.assertEquals(r1.nextInt(), r2.nextInt());
        }
    }
    /**
     * @Title: testRandom1
     * @Description: 產(chǎn)生[1,2.5)之間的數(shù)的,有公式 nextDouble()*(b-a)+a
     * @param 設(shè)定文件
     * @return void 返回類型
     * @throws
     */
    @Test
    @Ignore
    public void testRandom1() {
        for (int i = 0; i < 10; ++i) {
            System.out.println(r1.nextDouble() * 1.5 + 1);
        }
    }
    /**
     * @Title: testRandom2
     * @Description: 產(chǎn)生[0,10)的兩種方法,生成[0,n)區(qū)間的數(shù)有公式Math.abs(nextInt()%n)和nextInt(n)
     */
    @Test
    @Ignore
    public void testRandom2() {
        for (int i = 0; i < 10; ++i) {
            System.out.println("方法一: " + r1.nextInt(10));
            System.out.println("方法二: " + Math.abs(r2.nextInt() % 10));
        }
    }
    /**
     * @Title: testNextBoolean
     * @Description: 生成一個隨機(jī)的boolean值,true和false值均等
     */
    @Test
    @Ignore
    public void testNextBoolean() {
        for (int i = 0; i < 10; ++i) {
            System.out.println(r1.nextBoolean());
        }
    }
    /**
     * @Title: testNextInt
     * @Description: 生成一個-2^31~2^31-1之間的隨機(jī)數(shù)
     */
    @Test
    @Ignore
    public void testNextInt() {
        for (int i = 0; i < 10; ++i) {
            System.out.println(Math.abs(r1.nextInt()));// 0~2^31-1
            System.out.println(r1.nextInt());// -2^31~2^31-1
            System.out.println(r1.nextInt(10));// [0,10),參數(shù)10為隨機(jī)生成數(shù)字的上限
        }
    }    
    /**
    * @Title: testNextDouble 
    * @Description: 隨機(jī)生成[0,1.0)區(qū)間的小數(shù)
     */
    @Test
    @Ignore
    public void testNextDouble() {
        for (int i = 0; i < 10; ++i) {
            System.out.println(r1.nextDouble());
        }
    }    
    /**
    * @Title: testRandom3 
    * @Description: 生成任意區(qū)間[a,b),公式nextInt(b-a)+a和Math.abs(nextInt()%(b-a)+a),例如區(qū)間[-3,15)
     */
    @Test
    @Ignore
    public void testRandom3() {
        for (int i = 0; i < 100; ++i) {
            System.out.println(r1.nextInt(18) - 3);
            System.out.println(Math.abs(r1.nextInt()%18)-3);
        }
    }    
    /**
    * @Title: testRandom4 
    * @Description: 生成任意區(qū)間[a,b],公式nextInt(b+1-a)+a和Math.abs(nextInt()%(b+1-a)+a),例如區(qū)間[3,10]
     */
    @Test
    public void testRandom4(){
        for(int i=0;i<20;++i){
            System.out.println(r1.nextInt(8)+3);
        }
    }
}

能夠經(jīng)過java.util.Random實(shí)現(xiàn)概率控制

在前面的方法介紹中,nextInt(int n)方法中生成的數(shù)字是均勻的,也就是說該區(qū)間內(nèi)部的每一個數(shù)字生成的概率是相同的。那么若是生成一個[0,100)區(qū)間的隨機(jī)整數(shù),則每一個數(shù)字生成的概率應(yīng)該是相同的,并且因為該區(qū)間中總計有100個整數(shù),因此每一個數(shù)字的概率都是1%。按照這個理論,能夠?qū)崿F(xiàn)程序中的概率問題。數(shù)組

示例代碼:do

@Test
    public void testRandom5() {
        for (int i = 0; i < 100; ++i) {
            int a = r1.nextInt(100);
            if (a < 55) {
                System.out.println("1");// 55%的概率
            } else if (a < 95) {
                System.out.println("2");// 40%的概率
            } else {
                System.out.println("3");// 5%的概率
            }
        }
    }

以上就是動力節(jié)點(diǎn)小編介紹的"Java隨機(jī)數(shù)生成器的實(shí)現(xiàn)",希望對大家有幫助,如有疑問,請在線咨詢,有專業(yè)老師隨時為您服務(wù)。

提交申請后,顧問老師會電話與您溝通安排學(xué)習(xí)

免費(fèi)課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 精品无人区乱码一区二区三区手机 | 国产日产欧美精品 | 护士一级毛片 | 福利视频自拍 | 黄黄视频免费看 | 99热精品成人免费观看 | 欧美成免费 | 又爽又黄又无遮挡的视频在线观看 | 在线观看一级毛片免费 | 国产资源站 | 在线观看日本免费不卡 | 国产精品96久久久久久久 | 尹人综合网| 精品久久久久久久久久中文字幕 | 欧美性猛交aa一级 | 国产三级日产三级日本三级 | 四虎影院免费观看 | 中国特级黄一级真人毛片 | 欧美7777| 亚洲一区二区三区四区 | 97色综合| 欧美日韩国产超高清免费看片 | 香蕉国产精品 | 成年女人18级毛片毛片 | 欧美一级高清在线观看 | 国产欧美曰韩一区二区三区 | 日韩城人免费 | 午夜不卡影院 | 亚洲另类第一页 | 国产乱码精品一区二区三区四川 | 婷婷色综合网 | 秋霞在线观看成人高清视频51 | 中文字幕一区二区三区免费视频 | 久久婷婷丁香七月色综合 | 精品国产网 | 国产成综合 | 四虎影剧院 | 成人毛片大全 | 2018天天操| 九九九九热精品免费视频 | 亚洲精品国产福利一区二区三区 |