最近用到隨機數,但是一直都沒搞多清楚。剛好用到就總結一下。(主要是來源API以及網上)
主要關注兩方面:
如何產生一個隨機數;
如何控制產生的隨機數范圍,還包括正負,類型;
JAVA能實現隨機數的方法主要有:
第一種:使用java.lang.math類中的Math.random()方法;
API說明是:返回帶正號的
double
值,該值大于等于
0.0
且小于
1.0
。
返回值是一個偽隨機選擇的數,在該范圍內(近似)均勻分布。
使用:這個方法主要用來返回一個正整數,例:int a = (int) (Math.random() * 1000) ;
即可返回一個0~1000內的所有正整數,不過不知道包不包括0和1000,想也應該是包括地!當然你可以換成100。
很多時候我們用到隨機數主要是出于某個對象或其他事件有多種可能的狀態。通過產生隨機數,
隨機地實現某一狀態,改變顯示結果或是使程序進入某一分支中。
例如俄羅斯方塊中,方塊有七種類型,同時每一個方塊又有四種狀態。可以用這樣的方式 來隨機產生下落的
方塊:
int blockType = (int) (Math.random() * 1000) % 7;
int turnState = (int) (Math.random() * 1000) % 4;
第二種:使用java.util.Random類的Random對象。當然他的功能就強大多了,不僅僅可以產生隨機整數,浮點數,長整型,布爾數都可以。
只要調用相應的方法即可。
使用:java.util.Random r = new java.util.Random();
Tpye x = r.nextTpye();//這里用了描述語言,具體用那個自己選;
產生的隨機數真不知道是那個。可以肯定上面代碼如果是整型,那一般是很大的數,同時有正有負。
如何生成某個范圍的隨機數?比如像上面,0~1000之間的隨機數?
一般的方法是:取正取模
Random r = new Random();
int a = (r.nextInt()>>>1)%100;
但會出現值偏小的情況。
所以,JDK升級的版本的用法就為nextInt(100)產生0-100之間的隨機數,更方便。
API:public int
nextInt(int n)
返回一個偽隨機數,它是取自此隨機數生成器序列的、在 0(包括)和指定值(不包括)之間均勻分布的
int
值。
其他類型的也一樣。
還可以簡單地用如:
Random r = new Random();
int i = r.randomInt(10);//輸入一個0到9 的隨機數;
就先寫到這里,有機會再加吧!