import java.util.Random;
成都創(chuàng)新互聯(lián)是專業(yè)的武定網(wǎng)站建設(shè)公司,武定接單;提供網(wǎng)站制作、網(wǎng)站建設(shè),網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行武定網(wǎng)站開發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來(lái)合作!
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對(duì)象
System.out.println("使用不帶參數(shù)的構(gòu)造方法構(gòu)造的Random對(duì)象:");
Random rd1 = new Random();
// 產(chǎn)生各種類型的隨機(jī)數(shù)
// 按均勻分布產(chǎn)生整數(shù)
System.out.println("int: " + rd1.nextInt());
// 按均勻分布產(chǎn)生長(zhǎng)整數(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對(duì)象
// 構(gòu)造函數(shù)的參數(shù)是long類型,是生成隨機(jī)數(shù)的種子。
System.out.println("使用帶參數(shù)的構(gòu)造方法構(gòu)造的Random對(duì)象:");
Random ran2 = new Random(10);
// 對(duì)于種子相同的Random對(duì)象,生成的隨機(jī)數(shù)序列是一樣的。
System.out.println("使用種子為10的Random對(duì)象生成[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對(duì)象生成[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對(duì)象,
// 則不會(huì)出現(xiàn)這種情況,這是因?yàn)樵跊]帶參數(shù)構(gòu)造函數(shù)生成的Random對(duì)象的種子缺省是當(dāng)前系統(tǒng)時(shí)間的毫秒數(shù)。
// 另外,直接使用Random無(wú)法避免生成重復(fù)的數(shù)字,如果需要生成不重復(fù)的隨機(jī)數(shù)序列,需要借助數(shù)組和集合類
}
}運(yùn)行結(jié)果:
C:\java RandomNumber
Math.random(): 0.525171492959965
使用不帶參數(shù)的構(gòu)造方法構(gòu)造的Random對(duì)象:
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對(duì)象:
使用種子為10的Random對(duì)象生成[0,10)內(nèi)隨機(jī)整數(shù)序列:
3 0 3 0 6 6 7 8 1 4
使用另一個(gè)種子為10的Random對(duì)象生成[0,10)內(nèi)隨機(jī)整數(shù)序列:
3 0 3 0 6 6 7 8 1 4
寫法:inttemp=m+(int)(Math.random()*(n+1-m));//Java生成從m到n的隨機(jī)整數(shù)[m,n]。
random(),函數(shù),random函數(shù)返回一個(gè)0~num-1之間的隨機(jī)數(shù)。random(num)是在stdlib.h中的一個(gè)宏定義。num和函數(shù)返回值都是整型數(shù)。
擴(kuò)展資料:
注意
如需要在一個(gè)random()序列上生成真正意義的隨機(jī)數(shù),在執(zhí)行其子序列時(shí)使用randomSeed()函數(shù)預(yù)設(shè)一個(gè)絕對(duì)的隨機(jī)輸入,例如在一個(gè)斷開引腳上的analogRead()函數(shù)的返回值。
反之,有些時(shí)候偽隨機(jī)數(shù)的精確重復(fù)也是有用的。這可以在一個(gè)隨機(jī)系列開始前,通過(guò)調(diào)用一個(gè)使用固定數(shù)值的randomSeed()函數(shù)來(lái)完成。
要生成在[min,max]之間的隨機(jī)整數(shù),可使用Random類進(jìn)行相關(guān)運(yùn)算,代碼如下:
import java.util.Random;
public class RandomTest {
public static void main(String[] args) {
int max=10000;
int min=1000;
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)取模。
以生成[1000,10000]隨機(jī)數(shù)為例,首先生成0-10000的隨機(jī)數(shù),然后對(duì)(10000-1000+1)取模得到[0-1000]之間的隨機(jī)數(shù),然后加上min=1000,最后生成的是1000-10000的隨機(jī)數(shù)