撿起丟下一個多月的Java,從新複習書本上的東西,來到隨機數這一部分:
問題:生成指定範圍的隨機數,好比生成[10,20)區間內的隨機整數、生成[0,50]區間內的隨機整數。html
Java內有兩種實現僞隨機數的方法,一種是java.util.Random(須要手動導入),另外一種是Math.randomjava
##1.基於Random類算法
import java.util.Random; /** * Created by Administrator on 2016/11/26. */ public class Ram { public static void main(String[] args){ Random b = new Random(20); int a = b.nextInt(51); while (a != 50){ a = b.nextInt(51); System.out.println(a); if (a == 50){ System.out.println("Hell yeah"); } } System.out.println(a); } }
解釋下:在實例化時的20只是做爲一個種子,種子數只是隨機算法的起源數字,和生成的隨機數的區間沒有任何關係,若是沒有指定數字,則使用系統時間做爲種子dom
nextInt或者nextDouble是指定一個數的最大範圍,但不包括這個數,上面的代碼生成的是[0,50]的整數,輸出的僅是爲了方便查看結果函數
##2.基於後者3d
/** * Created by Administrator on 2016/11/27. */ public class Ram1 { public static void main(String[] args){ int a = (int)(Math.random()*51); while (a != 50){ a = (int)(Math.random()*51); System.out.println(a); if (a == 50){ System.out.println(a); break; } } System.out.println(a); } }
random()會生成一個[0,1)內的浮點數,若是你想生成[0,50]的整數,你須要在Math.random()後乘51,再進行顯式轉換。若是你想把區間收縮,好比[10,50],你須要在乘41後再加10,這樣,最小的數值就是10,而最大的數值不會超過51,顯式轉換後就會是50code
下面的代碼是用random函數來生成[10,20)裏的隨機數:htm
public class Ram1 { public static void main(String[] args){ for(int i = 0;i < 15;i++){ int a = (int)(Math.random()*10+10); System.out.println(a); } } }
輸出的結果:blog
19 19 12 18 10 13 16 18 11 10 10 16 14 15 19
另外一種實現:get
import java.util.Random; /** * Created by Administrator on 2016/11/26. */ public class Ram { public static void main(String[] args){ Random b = new Random(); for(int i = 0;i < 15;i++){ int a = b.nextInt(10)+10; System.out.println(a); } } }
兩種方案都至關接近,使用時視狀況選擇吧,就醬
##一篇比較好的參考 隨機數