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

Java創(chuàng)建隨機(jī)數(shù)的四種方式總結(jié)

 更新時(shí)間:2022年07月27日 11:23:47   作者:草木之花  
這篇文章主要介紹了java的四種隨機(jī)數(shù)生成方式的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,,需要的朋友可以參考下

第一次接觸到隨機(jī)數(shù)還是在c語言里面 使用的是 rand(); 但是重新執(zhí)行一次的時(shí)候會發(fā)現(xiàn),誒,居然和上一次執(zhí)行的結(jié)果是一樣的,因?yàn)闆]有初始化種子,所以系統(tǒng)用的都是統(tǒng)一的種子這時(shí)就會出現(xiàn)每次產(chǎn)生的隨機(jī)數(shù)都一樣,這時(shí)就會使用到 srand();這個(gè)隨機(jī)數(shù)的發(fā)生器, 把種子給定當(dāng)前的時(shí)間 即 srand((unsigned) time (&t)); 我c語言常用的隨機(jī)數(shù)函數(shù)如下:

c語言隨機(jī)數(shù)

#include <stdio.h>

int main(void) {

	int left,right;
	printf("請輸入一個(gè)數(shù):");
	scanf_s("%d%d",&left,&right);
	//srand((unsigned)time(NULL));
	//for(int i = 0; i<10; i++)
	//printf("%d\n",rand() % one);
	

	//改進(jìn)
	for (int i = 0; i < 10; i++)
	printf("隨機(jī)值如下:%d\n", srandNext(left, right));

	return 0;
}

/********************************************************************************
* @Function: srandNext
* @Description:Find a random integer from min to max
* @Author: caiziqi
* @Version: 1.1
* @formal parameter:min : is the minimum value of the value range of this random number function, max: is the maximum value range of this random number function
* @Date: 2022-7-26
* @Return : returns a random integer
********************************************************************************/

int srandNext(int max,int min) {

	//To prevent users from passing parameters incorrectly
	if (max <= min) {
		if (max == min) {
			return max;
		}
		int temp = max;
		max = min;
		min = temp;
	}

	unsigned int static seed = 0;
	seed++;

	srand((unsigned)time(NULL) + seed * seed);

	return rand() % (max - min + 1) + min;
}

當(dāng)然這不是最主要的今天是要講我學(xué)到的java中的四種創(chuàng)建隨機(jī)數(shù)的方法

java

以下代碼都是以a ~ b 之間 求出一個(gè)隨機(jī)整數(shù)

1.Random

創(chuàng)建對象

Random ra = new Random();
int right = (Math.max(a,b)) ;
int left = (Math.min(a,b);

int nu = (ra.nextInt(right) + left );

取值范圍 left 最小值 right 最大值

2.SecureRandom

創(chuàng)建對象

SecureRandom sra = new SecureRandom();
int right = (Math.max(a,b)) ;
int left = (Math.min(a,b);

int nu = (sra .nextInt(right) + left );

取值范圍 left 最小值 right 最大值

3.ThreadLocalRandom

創(chuàng)建對象

ThreadLocalRandom tra = ThreadLocalRandom.current();

求出隨機(jī)數(shù)的左值和右值

int right = (Math.max(a,b)) ;
int left = (Math.min(a,b);

int nu = (tra .nextInt(right) + left );

取值范圍 left 最小值 right 最大值

4.Math.Random

由于 Math 里面的方法是靜態(tài)的所以可以直接 類名.方法名 使用

int number = (int)(a + Math.random()*(b-a+1)) //返回一個(gè)int類型的參數(shù) 所以用 int 接收

范圍 a <= 隨機(jī)數(shù) < (b -a +1)

2 <= 隨機(jī)數(shù) < (4 -2 +1 )

完整代碼

import java.security.SecureRandom;
import java.util.Random;
import java.util.Scanner;
import java.util.concurrent.ThreadLocalRandom;

public class FourWaysOfRandomNumbers {
    public static void main(String[] args) {
        //用戶輸入兩個(gè)數(shù), 然后程序取這兩個(gè)數(shù)里面的其中隨機(jī)一個(gè)數(shù)
        Scanner input =  new Scanner(System.in);
        System.out.print("請輸入兩個(gè)數(shù):");
        int a = input.nextInt();
        int b = input.nextInt();

        // 取值范圍   left 最小值    right 最大值
        int right = Math.max(a,b);
        int left = Math.min(a,b);
        int nu;

        //四種生成隨機(jī)數(shù)的方法

        //第一種
        Random ra = new Random();
             while( true){
            nu =(ra.nextInt(right) + left ) ;
            System.out.println(nu);

            //找到最大隨機(jī)整數(shù) 輸出并結(jié)束
            if(nu == right) {

                System.out.println(nu);
                return;
            }
        }

        //第二種
/*
        SecureRandom sra = new SecureRandom();

        while(true){
            nu =(sra.nextInt(right) + left ) ;
            System.out.println(nu);

            //找到最大隨機(jī)整數(shù) 輸出并結(jié)束
            if(nu == right) {
                System.out.println(nu);
                return;
            }
        }*/


        //第三種  在多線程的時(shí)候使用 是最佳的; 因?yàn)樗鼤槊總€(gè)線程都 使用不同的種子
       /* ThreadLocalRandom tra =  ThreadLocalRandom.current();
        while(true){
            nu =(tra.nextInt(right) + left ) ;
            System.out.println(nu);

            //找到最大隨機(jī)整數(shù) 輸出并結(jié)束
            if(nu == right) {
                System.out.println(nu);
                return;
            }
        }*/

      /*  //第四種
         int value = (int)(a + Math.random()*(b-a+1));
        System.out.println(value);
*/


    }

}

到此這篇關(guān)于Java創(chuàng)建隨機(jī)數(shù)的四種方式總結(jié)的文章就介紹到這了,更多相關(guān)Java創(chuàng)建隨機(jī)數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • java生成csv文件亂碼的解決方法示例 java導(dǎo)出csv亂碼

    java生成csv文件亂碼的解決方法示例 java導(dǎo)出csv亂碼

    這篇文章主要介紹了java生成csv文件亂碼的解決方法,大家可以直接看下面的示例
    2014-01-01
  • Java中static靜態(tài)變量的初始化完全解析

    Java中static靜態(tài)變量的初始化完全解析

    static所聲明的變量在Java中有一個(gè)初始化的先后順序,帶著這個(gè)問題接下來我們就來進(jìn)行Java中static靜態(tài)變量的初始化完全解析:
    2016-06-06
  • 使用arthas命令redefine實(shí)現(xiàn)Java熱更新(推薦)

    使用arthas命令redefine實(shí)現(xiàn)Java熱更新(推薦)

    今天分享一個(gè)非常重要的命令 redefine ,主要作用是加載外部的 .class 文件,用來替換 JVM 已經(jīng)加載的類,總結(jié)起來就是實(shí)現(xiàn)了 Java 的熱更新,感興趣的朋友跟隨小編一起看看吧
    2020-05-05
  • SpringBoot響應(yīng)Json數(shù)據(jù)亂碼通過配置的解決

    SpringBoot響應(yīng)Json數(shù)據(jù)亂碼通過配置的解決

    這篇文章主要介紹了SpringBoot響應(yīng)Json數(shù)據(jù)亂碼通過配置的解決,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • 深度源碼解析Java 線程池的實(shí)現(xiàn)原理

    深度源碼解析Java 線程池的實(shí)現(xiàn)原理

    如何高效的使用這些資源就是程序員在平時(shí)寫代碼時(shí)候的一個(gè)努力的方向。本文要說的線程池就是一種對 CPU 利用的優(yōu)化手段。對Java 線程池的實(shí)現(xiàn)原理相關(guān)知識感興趣的朋友一起看看吧
    2021-05-05
  • Guava?Retryer實(shí)現(xiàn)接口重試的示例

    Guava?Retryer實(shí)現(xiàn)接口重試的示例

    本文主要介紹了Guava?Retryer實(shí)現(xiàn)接口重試的示例,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • Java自動拆裝箱簡單介紹

    Java自動拆裝箱簡單介紹

    這篇文章主要為大家詳細(xì)介紹了Java自動拆裝箱的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • Java實(shí)現(xiàn)駝峰下劃線互轉(zhuǎn)的使用示例

    Java實(shí)現(xiàn)駝峰下劃線互轉(zhuǎn)的使用示例

    駝峰和下劃線互轉(zhuǎn)場景是在不同命名規(guī)范的情況下,需要進(jìn)行字段名稱的轉(zhuǎn)換,本文就來介紹一下Java實(shí)現(xiàn)駝峰下劃線互轉(zhuǎn)的使用示例,感興趣的可以了解一下
    2023-12-12
  • Springboot打包成jar發(fā)布的操作方法

    Springboot打包成jar發(fā)布的操作方法

    打包的方式有打包成jar包或者打包成war包發(fā)布,區(qū)別在于jar包內(nèi)置了tomcat、netty等服務(wù)器,更改只需要修改pom.xml的坐標(biāo)即可,war不內(nèi)置服務(wù)器,需要上傳到服務(wù)器tomcat解壓后運(yùn)行,本文分析Springboot打包成jar發(fā)布,感興趣的朋友一起看看吧
    2023-02-02
  • Java?Web開發(fā)常用框架Spring?MVC?Struts示例解析

    Java?Web開發(fā)常用框架Spring?MVC?Struts示例解析

    這篇文章主要為大家介紹了Java?Web開發(fā)常用框架Spring?MVC?Struts示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-06-06

最新評論