java隨機(jī)數(shù)源代碼 Java隨機(jī)數(shù)代碼

Java隨機(jī)數(shù)代碼怎么寫

Math.random()是令系統(tǒng)隨機(jī)選取大于等于 0.0 且小于 1.0 的偽隨機(jī) double 值,是Java語言常用代碼。

創(chuàng)新互聯(lián)是一家專注網(wǎng)站建設(shè)、網(wǎng)絡(luò)營銷策劃、微信平臺小程序開發(fā)、電子商務(wù)建設(shè)、網(wǎng)絡(luò)推廣、移動(dòng)互聯(lián)開發(fā)、研究、服務(wù)為一體的技術(shù)型公司。公司成立10余年以來,已經(jīng)為超過千家木托盤各業(yè)的企業(yè)公司提供互聯(lián)網(wǎng)服務(wù)?,F(xiàn)在,服務(wù)的超過千家客戶與我們一路同行,見證我們的成長;未來,我們一起分享成功的喜悅。

例如:var a:Number=Math.random()*2+1,設(shè)置一個(gè)隨機(jī)1到3的變量。

求JAVA生成隨機(jī)數(shù)的代碼

import java.util.Random;

public class RandomNumber{

public static void main(String[] args) {

// 使用java.lang.Math的random方法生成隨機(jī)數(shù)

System.out.println("Math.random(): " + Math.random());

// 使用不帶參數(shù)的構(gòu)造方法構(gòu)造java.util.Random對象

System.out.println("使用不帶參數(shù)的構(gòu)造方法構(gòu)造的Random對象:");

Random rd1 = new Random();

// 產(chǎn)生各種類型的隨機(jī)數(shù)

// 按均勻分布產(chǎn)生整數(shù)

System.out.println("int: " + rd1.nextInt());

// 按均勻分布產(chǎn)生長整數(shù)

System.out.println("long: " + rd1.nextLong());

// 按均勻分布產(chǎn)生大于等于0,小于1的float數(shù)[0, 1)

System.out.println("float: " + rd1.nextFloat());

// 按均勻分布產(chǎn)生[0, 1)范圍的double數(shù)

System.out.println("double: " + rd1.nextDouble());

// 按正態(tài)分布產(chǎn)生隨機(jī)數(shù)

System.out.println("Gaussian: " + rd1.nextGaussian());

// 生成一系列隨機(jī)數(shù)

System.out.print("隨機(jī)整數(shù)序列:");

for (int i = 0; i 5; i++) {

System.out.print(rd1.nextInt() + " ");

}

System.out.println();

// 指定隨機(jī)數(shù)產(chǎn)生的范圍

System.out.print("[0,10)范圍內(nèi)隨機(jī)整數(shù)序列: ");

for (int i = 0; i 10; i++) {

// Random的nextInt(int n)方法返回一個(gè)[0, n)范圍內(nèi)的隨機(jī)數(shù)

System.out.print(rd1.nextInt(10) + " ");

}

System.out.println();

System.out.print("[5,23)范圍內(nèi)隨機(jī)整數(shù)序列: ");

for (int i = 0; i 10; i++) {

// 因?yàn)閚extInt(int n)方法的范圍是從0開始的,

// 所以需要把區(qū)間[5,28)轉(zhuǎn)換成5 + [0, 23)。

System.out.print(5 + rd1.nextInt(23) + " ");

}

System.out.println();

System.out.print("利用nextFloat()生成[0,99)范圍內(nèi)的隨機(jī)整數(shù)序列: ");

for (int i = 0; i 10; i++) {

System.out.print((int) (rd1.nextFloat() * 100) + " ");

}

System.out.println();

System.out.println();

// 使用帶參數(shù)的構(gòu)造方法構(gòu)造Random對象

// 構(gòu)造函數(shù)的參數(shù)是long類型,是生成隨機(jī)數(shù)的種子。

System.out.println("使用帶參數(shù)的構(gòu)造方法構(gòu)造的Random對象:");

Random ran2 = new Random(10);

// 對于種子相同的Random對象,生成的隨機(jī)數(shù)序列是一樣的。

System.out.println("使用種子為10的Random對象生成[0,10)內(nèi)隨機(jī)整數(shù)序列: ");

for (int i = 0; i 10; i++) {

System.out.print(ran2.nextInt(10) + " ");

}

System.out.println();

Random ran3 = new Random(10);

System.out.println("使用另一個(gè)種子為10的Random對象生成[0,10)內(nèi)隨機(jī)整數(shù)序列: ");

for (int i = 0; i 10; i++) {

System.out.print(ran3.nextInt(10) + " ");

}

System.out.println();

// ran2和ran3生成的隨機(jī)數(shù)序列是一樣的,如果使用兩個(gè)沒帶參數(shù)構(gòu)造函數(shù)生成的Random對象,

// 則不會出現(xiàn)這種情況,這是因?yàn)樵跊]帶參數(shù)構(gòu)造函數(shù)生成的Random對象的種子缺省是當(dāng)前系統(tǒng)時(shí)間的毫秒數(shù)。

// 另外,直接使用Random無法避免生成重復(fù)的數(shù)字,如果需要生成不重復(fù)的隨機(jī)數(shù)序列,需要借助數(shù)組和集合類

}

}運(yùn)行結(jié)果:

C:\java RandomNumber

Math.random(): 0.525171492959965

使用不帶參數(shù)的構(gòu)造方法構(gòu)造的Random對象:

int: 636539740

long: -752663949229005813

float: 0.87349784

double: 0.4065973309853902

Gaussian: 0.4505871918488808

隨機(jī)整數(shù)序列:1936784917 1339857386 -1185229615 1883411721 1409219372

[0,10)范圍內(nèi)隨機(jī)整數(shù)序列: 1 1 5 5 9 0 1 0 2 4

[5,23)范圍內(nèi)隨機(jī)整數(shù)序列: 9 13 26 18 11 27 26 12 21 8

利用nextFloat()生成[0,99)范圍內(nèi)的隨機(jī)整數(shù)序列: 1 47 72 59 49 86 80 88 55 82

使用帶參數(shù)的構(gòu)造方法構(gòu)造的Random對象:

使用種子為10的Random對象生成[0,10)內(nèi)隨機(jī)整數(shù)序列:

3 0 3 0 6 6 7 8 1 4

使用另一個(gè)種子為10的Random對象生成[0,10)內(nèi)隨機(jī)整數(shù)序列:

3 0 3 0 6 6 7 8 1 4

Java怎么產(chǎn)生隨機(jī)數(shù)?

一、利用random方法來生成隨機(jī)數(shù)。

在Java語言中生成隨機(jī)數(shù)相對來說比較簡單,因?yàn)橛幸粋€(gè)現(xiàn)成的方法可以使用。在Math類中,Java語言提供了一個(gè)叫做random的方法。通過這個(gè)方法可以讓系統(tǒng)產(chǎn)生隨機(jī)數(shù)。

二、通過Random類來生成隨機(jī)數(shù)。

在Java語言中,除了可以通過random 方法來產(chǎn)生隨機(jī)數(shù)之外,還可以通過一個(gè)random類來產(chǎn)生隨機(jī)數(shù)。程序開發(fā)人員可以通過實(shí)例化一個(gè)Random對象來創(chuàng)建一個(gè)隨機(jī)數(shù)的生成器。如 Random i=new Random()。通過這條語句就利用了Random類創(chuàng)建了一個(gè)隨機(jī)數(shù)的生成器。數(shù)

三、產(chǎn)生隨機(jī)的字符。

可以利用random方法來產(chǎn)生隨機(jī)字符。如可以利用代碼生成一個(gè)隨機(jī)的小寫字符:(char)(‘a(chǎn)’+Math.random()*(‘z’-‘a(chǎn)’+1))。其實(shí)這跟生成任意兩個(gè)數(shù)之間的隨機(jī)數(shù)類似。通過以上的代碼就可以生成一個(gè)范圍之內(nèi)的任意隨機(jī)字符。通過對這個(gè)代碼進(jìn)行適當(dāng)?shù)男拚?,還可以生成任意兩個(gè)字符之間的隨機(jī)字符與任意大寫字符的隨機(jī)字符。其轉(zhuǎn)換的方式跟上面提到的任意范圍之內(nèi)的隨機(jī)數(shù)類似。

下面來了解下隨機(jī)數(shù)的運(yùn)用:

在統(tǒng)計(jì)學(xué)的不同技術(shù)中需要使用隨機(jī)數(shù),比如在從統(tǒng)計(jì)總體中抽取有代表性的樣本的時(shí)候,或者在將實(shí)驗(yàn)動(dòng)物分配到不同的試驗(yàn)組的過程中,或者在進(jìn)行蒙特卡羅模擬法計(jì)算的時(shí)候等等。

真正的隨機(jī)數(shù)是使用物理現(xiàn)象產(chǎn)生的:比如擲錢幣、骰子、轉(zhuǎn)輪、使用電子元件的噪音、核裂變等等。這樣的隨機(jī)數(shù)發(fā)生器叫做物理性隨機(jī)數(shù)發(fā)生器,它們的缺點(diǎn)是技術(shù)要求比較高。

在實(shí)際應(yīng)用中往往使用偽隨機(jī)數(shù)就足夠了。這些數(shù)列是“似乎”隨機(jī)的數(shù),實(shí)際上它們是通過一個(gè)固定的、可以重復(fù)的計(jì)算方法產(chǎn)生的。計(jì)算機(jī)或計(jì)算器產(chǎn)生的隨機(jī)數(shù)有很長的周期性。它們不真正地隨機(jī),因?yàn)樗鼈儗?shí)際上是可以計(jì)算出來的,但是它們具有類似于隨機(jī)數(shù)的統(tǒng)計(jì)特征。這樣的發(fā)生器叫做偽隨機(jī)數(shù)發(fā)生器。

在真正關(guān)鍵性的應(yīng)用中,比如在密碼學(xué)中,人們一般使用真正的隨機(jī)數(shù)。

C語言、C++、C#、Java、Matlab等程序語言和軟件中都有對應(yīng)的隨機(jī)數(shù)生成函數(shù),如rand等。

Java怎么產(chǎn)生不重復(fù)的隨機(jī)數(shù),求代碼

/**

?*?隨機(jī)指定范圍內(nèi)N個(gè)不重復(fù)的數(shù)

?*?最簡單最基本的方法

?*?@param?min?指定范圍最小值

?*?@param?max?指定范圍最大值

?*?@param?n?隨機(jī)數(shù)個(gè)數(shù)

?*/

public?static?int[]?randomCommon(int?min,?int?max,?int?n){

if?(n??(max?-?min?+?1)?||?max??min)?{

return?null;

}

int[]?result?=?new?int[n];

int?count?=?0;

while(count??n)?{

int?num?=?(int)?(Math.random()?*?(max?-?min))?+?min;

boolean?flag?=?true;

for?(int?j?=?0;?j??n;?j++)?{

if(num?==?result[j]){

flag?=?false;

break;

}

}

if(flag){

result[count]?=?num;

count++;

}

}

return?result;

}

網(wǎng)站標(biāo)題:java隨機(jī)數(shù)源代碼 Java隨機(jī)數(shù)代碼
本文鏈接:http://muchs.cn/article36/hjecpg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站設(shè)計(jì)App設(shè)計(jì)、用戶體驗(yàn)、云服務(wù)器、定制網(wǎng)站靜態(tài)網(wǎng)站

廣告

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

成都網(wǎng)站建設(shè)公司