更新時間:2021-05-25 11:10:55 來源:動力節(jié)點 瀏覽1172次
使用Random類,一般是生成指定區(qū)間的隨機數(shù)字,下面就一一介紹如何生成對應(yīng)區(qū)間的隨機數(shù)字。以下生成隨機數(shù)的代碼均使用以下Random對象r進行生成:
Random r = new Random();
1.生成[0,1.0)區(qū)間的小數(shù)
double d1 = r.nextDouble();
直接使用nextDouble方法獲得。
2.生成[0,5.0)區(qū)間的小數(shù)
double d2 = r.nextDouble() * 5;
因為nextDouble方法生成的數(shù)字區(qū)間是[0,1.0),將該區(qū)間擴大5倍即是要求的區(qū)間。
同理,生成[0,d)區(qū)間的隨機小數(shù),d為任意正的小數(shù),則只需要將nextDouble方法的返回值乘以d即可。
3.生成[1,2.5)區(qū)間的小數(shù)
double d3 = r.nextDouble() * 1.5 + 1;
生成[1,2.5)區(qū)間的隨機小數(shù),則只需要首先生成[0,1.5)區(qū)間的隨機數(shù)字,然后將生成的隨機數(shù)區(qū)間加1即可。
同理,生成任意非從0開始的小數(shù)區(qū)間[d1,d2)范圍的隨機數(shù)字(其中d1不等于0),則只需要首先生成[0,d2-d1)區(qū)間的隨機數(shù)字,然后將生成的隨機數(shù)字區(qū)間加上d1即可。
4.生成任意整數(shù)
int n1 = r.nextInt();
直接使用nextInt方法即可。
5.生成[0,10)區(qū)間的整數(shù)
int n2 = r.nextInt(10);
n2 = Math.abs(r.nextInt() % 10);
以上兩行代碼均可生成[0,10)區(qū)間的整數(shù)。
第一種實現(xiàn)使用Random類中的nextInt(int n)方法直接實現(xiàn)。
第二種實現(xiàn)中,首先調(diào)用nextInt()方法生成一個任意的int數(shù)字,該數(shù)字和10取余以后生成的數(shù)字區(qū)間為(-10,10),然后再對該區(qū)間求絕對值,則得到的區(qū)間就是[0,10)了。
同理,生成任意[0,n)區(qū)間的隨機整數(shù),都可以使用如下代碼:
int n2 = r.nextInt(n);
n2 = Math.abs(r.nextInt() % n);
6.生成[0,10]區(qū)間的整數(shù)
int n3 = r.nextInt(11);
n3 = Math.abs(r.nextInt() % 11);
相對于整數(shù)區(qū)間,[0,10]區(qū)間和[0,11)區(qū)間等價,所以即生成[0,11)區(qū)間的整數(shù)。
7.生成[-3,15)區(qū)間的整數(shù)
int n4 = r.nextInt(18) - 3;
n4 = Math.abs(r.nextInt() % 18) - 3;
生成非從0開始區(qū)間的隨機整數(shù),可以參看上面非從0開始的小數(shù)區(qū)間實現(xiàn)原理的說明。
以上就是動力節(jié)點小編介紹的"Java Random生成隨機數(shù)實例",希望對大家有幫助,如有疑問,請在線咨詢,有專業(yè)老師隨時為您服務(wù)。