欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

java生成指定范圍隨機(jī)數(shù)的多種代碼

生成指定范圍內(nèi)的隨機(jī)數(shù)這個(gè)是最常用的技術(shù)之一,程序員希望通過(guò)隨機(jī)數(shù)的方式來(lái)處理眾多的業(yè)務(wù)邏輯,測(cè)試過(guò)程中也希望通過(guò)隨機(jī)數(shù)的方式生成包含大量數(shù)字的測(cè)試用例。

創(chuàng)新互聯(lián)建站長(zhǎng)期為成百上千客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開(kāi)放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為合作企業(yè)提供專業(yè)的成都做網(wǎng)站、成都網(wǎng)站設(shè)計(jì),合作網(wǎng)站改版等技術(shù)服務(wù)。擁有10余年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開(kāi)發(fā)。

問(wèn)題往往類似于:

如何隨機(jī)生成 1~100 之間的隨機(jī)數(shù),取值包含邊界值 1 和 100。

或者是:

如何隨機(jī)生成隨機(jī)的3位整數(shù)?

等等……

以 Java 語(yǔ)言為例,我們觀察其 Random 對(duì)象的 nextInt(int) 方法,發(fā)現(xiàn)這個(gè)方法將生成 0 ~ 參數(shù)之間隨機(jī)取值的整數(shù)。例如(假設(shè)先有 Random rand = newRandom();,下同):

rand.nextInt(100);

這行代碼將生成范圍0~100 之間的隨機(jī)數(shù),有趣的是,取值可能為 0 ,但不可能為 100。我們用中學(xué)數(shù)學(xué)課學(xué)習(xí)的區(qū)間表示法,表示為:[0, 100)。

那么如果要獲得區(qū)間 [1~100]的隨機(jī)數(shù),該怎么辦呢?稍微動(dòng)動(dòng)腦筋就可以想到:區(qū)間 [0, 100) 內(nèi)的整數(shù),實(shí)際上就是區(qū)間 [0, 99]。因?yàn)樽畲筮吔鐬?00,可惜不能等于100,因此最大可能產(chǎn)生的“整數(shù)”就是99。

既然rand.nextInt(100) 獲得的值是區(qū)間 [0, 99],那么在這個(gè)區(qū)間左右各加 1,就得到了區(qū)間 [1, 100]。因此,代碼寫(xiě)成:

rand.nextInt(100)+ 1;

即可。運(yùn)行下面的代碼,將獲得 [1, 100] 的 10 個(gè)取值。

import java.util.Random; 
public class Test { 
 public static void main(String[] args){ 
 Random rand = new Random(); 
 for(int i=0; i<10; i++) { 
 System.out.println(rand.nextInt(100) + 1); 
 } 
 } 
} 

同理,很容易知道如果要獲得隨機(jī)兩位整數(shù),代碼寫(xiě)成:rand.nextInt(90) + 10;

你一定很驚訝,為什么是這么寫(xiě)出來(lái)的。其實(shí),在 nextInt() 方法中作為參數(shù)的數(shù)字 90 表示:你希望生成的隨機(jī)數(shù)的所有取值的可能性的數(shù)量(在本命題中,兩位整數(shù)取值為 [10, 99],共90個(gè)數(shù));加好后面的數(shù)字 10 ,表示區(qū)間的最小取值。

你可以驗(yàn)證下,按照這樣理解,[1, 100] 的隨機(jī)數(shù),是不是應(yīng)該寫(xiě)成rand.nextInt(100) + 1 。千萬(wàn)不要把參數(shù) 100 理解為最大取值。只是區(qū)間 [1, 100] 正好從 1 開(kāi)始,所以最大取值和取值可能性數(shù)量正好同為 100。

因此,

生成隨機(jī)三位數(shù)的代碼為:

rand.nextInt(900)+ 100;

生成區(qū)間 [64,128] 中隨機(jī)值的代碼為:

rand.nextInt(65)+ 64;

取值可能性的數(shù)量是如何計(jì)算出來(lái)的呢?當(dāng)然是 最大取值-最小取值+1 ,所以,有最終公式如下:

// For Java

int randNumber =rand.nextInt(MAX - MIN + 1) + MIN; // randNumber 將被賦值為一個(gè) MIN 和 MAX 范圍內(nèi)的隨機(jī)數(shù)

下面創(chuàng)新互聯(lián)小編分享一個(gè)網(wǎng)上常用的函數(shù)

函數(shù)一、要生成在[min,max]之間的隨機(jī)整數(shù)

import java.util.Random;

public class RandomTest {
	public static void main(String[] args) {
		int max=20;
		int min=10;
		Random random = new Random();

		int s = random.nextInt(max)%(max-min+1) + min;
		System.out.println(s);
	}
}

random.nextInt(max)表示生成[0,max]之間的隨機(jī)數(shù),然后對(duì)(max-min+1)取模。

以生成[10,20]隨機(jī)數(shù)為例,首先生成0-20的隨機(jī)數(shù),然后對(duì)(20-10+1)取模得到[0-10]之間的隨機(jī)數(shù),然后加上min=10,最后生成的是10-20的隨機(jī)數(shù)

函數(shù)二、

import java.util.*;
import java.io.*;

public class Random_Different {
	public static void main(String[] args) throws IOException{
		System.out.print("輸入產(chǎn)生的隨機(jī)數(shù)范圍,1到N,N=");
		int n=0;
		try{
			n=Integer.parseInt(new BufferedReader(new InputStreamReader(System.in)).readLine());
		}catch(Exception e){
			System.out.println("N必須為正整數(shù)");
			return;
		}
		if(n<1){
			System.out.println("N必須為正數(shù)");
			return;
		}
		int randArr[]=new int[n];
		int i=0;
		while(i<n){
			int rand=(new Random().nextInt(n)+1);
			boolean isRandExist=false;
			for(int j=0;j<randArr.length;j++){
				if(randArr[j]==rand){
					isRandExist=true;
					break;
				}
			}
			if(isRandExist==false){
				randArr[i]=rand;
				i++;
			}			
		}
		System.out.println(Arrays.toString(randArr));
	}
}

首先在1~n產(chǎn)生一個(gè)隨機(jī)數(shù)X,然后對(duì)這個(gè)之前產(chǎn)生的數(shù)據(jù)進(jìn)行遍歷,判斷是否存在有數(shù)等于這個(gè)新產(chǎn)生的隨機(jī)數(shù)的,如果有,立flag,

然后對(duì)之前的數(shù)據(jù)遍歷完畢之后,判斷flag是否立起來(lái),

如果是,就不添加這個(gè)隨機(jī)數(shù)進(jìn)數(shù)組,重新產(chǎn)生隨機(jī)數(shù)并收起flag,再重新遍歷已有的數(shù)據(jù)中是否已有這個(gè)隨機(jī)數(shù),

如果否,就添加,直到n個(gè)數(shù)據(jù)產(chǎn)生完畢。

最后輸出這個(gè)n個(gè)數(shù)據(jù)。

具體的運(yùn)行效果如下:

java生成指定范圍隨機(jī)數(shù)的多種代碼

為了說(shuō)明這個(gè)程序是健壯的,讓電腦輸入N,其中這個(gè)N從1-20,可以觀察到,輸出的數(shù)組中沒(méi)有一個(gè)數(shù)是相同的,完成任務(wù)!

java生成指定范圍隨機(jī)數(shù)的多種代碼

更多的數(shù)也是沒(méi)有問(wèn)題的,你設(shè)置N=二十萬(wàn),都沒(méi)有問(wèn)題,這里由于本猿猴的機(jī)器太渣,設(shè)置個(gè)N=33說(shuō)明效果。

java生成指定范圍隨機(jī)數(shù)的多種代碼

分享標(biāo)題:java生成指定范圍隨機(jī)數(shù)的多種代碼
本文來(lái)源:http://aaarwkj.com/article48/gdeiep.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站改版、網(wǎng)站內(nèi)鏈網(wǎng)站設(shè)計(jì)、外貿(mào)網(wǎng)站建設(shè)、網(wǎng)站制作電子商務(wù)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

網(wǎng)站托管運(yùn)營(yíng)
97精品久久九九中文字幕 | 国产亚洲一区二区三区乱码| 亚洲精品国产av成人网| 亚洲精品日韩国产3区| 亚洲精品一区二区午夜| 国产精品午夜福利91| 日韩不卡区免费在线观看| 欧美中文字幕在线精品| 亚洲熟妇丰满多毛的大昊| 成人一区二区三区观看| 亚洲成年人黄色小说网站| 亚洲国产精品高清久久| 久久综合婷婷亚洲五月| 亚洲欧美国产成人在线| 日本一区二区三区视频| 在线观看高清欧美国产视频| 久久国产精品人妻av| 欧美十八一区二区三区| 亚洲熟女熟妇另类中文| 99亚洲伊人久久精品影院| 国产精精精精品欧美日韩| 国内激情自拍偷拍视频| 国产亚洲av综合人人精品| 校花出白浆视频一区二区三区| 中文字幕乱码人妻一区| 日本熟女肥臀一区二区| 日本大胆高清人体艺术| 免费无遮挡18禁视频| 日韩欧美麻豆不卡一区二区| 另类国产人妖免费视频网站大全| 亚洲精品最新地址久久久| 中文字幕精品一区二区三| 久久久久久国产精品亚洲| 黑丝美女国产精品久久久| 日本精彩视频一区二区| 中文字幕精品免费日韩在线| 亚洲青涩精品一区二区三区| 国产精品国产三级国产不产一地| 国产精品情侣av自拍| 亚洲欧美日韩不卡视频| 国产高清在线a视频大全|