本文實例講述了Java獲得指定區(qū)間數(shù)的方法。分享給大家供大家參考。具體如下:
在編寫Java程序的時候很多時候都用到了隨機數(shù),但是一直都是用一次查一次,這次來一個總結(jié)吧,把Java中得隨機數(shù)的產(chǎn)生弄的清晰一些,以后就直接自己參考自己的這篇文章就好了。
Java中有兩個類可以產(chǎn)生隨機數(shù):
java.util.Random和java.Math.Random
Java實用工具類庫中的類java.util.Random提供了產(chǎn)生各種類型隨機數(shù)的方法。它可以產(chǎn)生int、long、float、double以 及Goussian等類型的隨機數(shù)。這也是它與java.lang.Math中的方法Random()最大的不同之處,后者只產(chǎn)生double型的隨機 數(shù)。
類Random中的方法十分簡單,它只有兩個構(gòu)造方法和六個普通方法。
構(gòu)造方法:
(1)public Random()
(2)public Random(long seed)
Random()使用當前時間即System.currentTimeMillis()作為發(fā)生器的種子,Random(long seed)使用指定的seed作為發(fā)生器的種子。
Java產(chǎn)生隨機數(shù)需要有一個基值seed,在第一種方法中基值缺省,則將系統(tǒng)時間作為seed。
普通方法:
(1)public synonronized void setSeed(long seed)
該方法是設(shè)定基值seed。
(2)public int nextInt()
該方法是產(chǎn)生一個整型隨機數(shù)。
(3)public long nextLong()
該方法是產(chǎn)生一個long型隨機數(shù)。
(4)public float nextFloat()
該方法是產(chǎn)生一個Float型隨機數(shù)。
(5)public double nextDouble()
該方法是產(chǎn)生一個Double型隨機數(shù)。
(6)public synchronized double nextGoussian()
該方法是產(chǎn)生一個double型的Goussian隨機數(shù)。
如果2個Random對象使用相同的種子(比如都是100),并且以相同的順序調(diào)用相同的函數(shù),那它們返回值完全相同。如下面代碼中兩個Random對象的輸出完全相同
指定范圍內(nèi)的隨機數(shù)
隨機數(shù)控制在某個范圍內(nèi),使用模數(shù)運算符%
1
2
3
4
5
6
7
8
9
|
import java.util.*; class TestRandom { public static void main(String[] args) { Random random = new Random(); for ( int i = 0 ; i < 10 ;i++) { System.out.println(Math.abs(random.nextInt())% 10 ); } } } |
獲得的隨機數(shù)有正有負的,用Math.abs使獲取數(shù)據(jù)范圍為非負數(shù)
獲取指定范圍內(nèi)的不重復(fù)隨機數(shù)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
import java.util.*; class TestRandom { public static void main(String[] args) { int [] intRet = new int [ 6 ]; int intRd = 0 ; //存放隨機數(shù) int count = 0 ; //記錄生成的隨機數(shù)個數(shù) int flag = 0 ; //是否已經(jīng)生成過標志 while (count< 6 ){ Random rdm = new Random(System.currentTimeMillis()); intRd = Math.abs(rdm.nextInt())% 32 + 1 ; for ( int i= 0 ;i<count;i++){ if (intRet[i]==intRd){ flag = 1 ; break ; } else { flag = 0 ; } } if (flag== 0 ){ intRet[count] = intRd; count++; } } for ( int t= 0 ;t< 6 ;t++){ System.out.println(t+ "->" +intRet[t]); } } } |
也可以有nextFloat等等,各種基本類型都有
Math.random也可以
比如說你想要0-10之間的隨機數(shù)
你可以這樣寫:
JAVA產(chǎn)生指定范圍的隨機數(shù)
產(chǎn)生Min-Max之間的數(shù)字
1
2
|
Random random= new Random(); int top = random.nextInt(maxtop)%(maxtop-mintop+ 1 ) + mintop; |
另一種實現(xiàn)原理:
1
2
3
4
|
Math.round(Math.random()*(Max-Min)+Min) long Temp; //不能設(shè)定為int,必須設(shè)定為long //產(chǎn)生1000到9999的隨機數(shù) Temp=Math.round(Math.random()* 8999 + 1000 ); |
希望本文所述對大家的java程序設(shè)計有所幫助。