1.隨機數的生成java
第一種方式:運用工具包java.lang.util.Random來生成數組
private static void suiji() { Random r=new Random(); int ival; for(int i=0;i<10;i++) { ival=r.nextInt(50); System.out.println(ival); } }
代碼的意思是:生成0-50隨機數,存在重複的。dom
第二種方式:用math類下的函數
private static void suiji2() { double dval; long lval; int ival; for(int i=0;i<10;i++) { dval=Math.random()*100; //1.用math函數四捨五入 //ival=Math.round(dval); //2.用類型強制轉換,將double轉換成int ival=(int)Math.round(dval); System.out.println(ival); } }
代碼採用 math提供的方法random獲取0-1之間浮點數。而後乘以多少 獲取相應範圍內數,好比100,則小數點右移兩位,獲取0-100之間的數,可是獲取的是浮點數,帶有小數,而後用四捨五入函數 round或者int強制類型轉換獲取整數,但也是含有重複的數。工具
第三種:則是利用UUID碼的生成:ui
private static void suiji3() { for(int i=0;i<10;i++) { String uuid=UUID.randomUUID().toString(); System.out.println(uuid); } }
代碼生成永不重複uuid碼。spa
咱們如今針對前兩個實現生成不重複的隨機數。code
private static void suiji4(int n,int m) { Integer arr[]=new Integer[n]; Random r=new Random(); int index=0; int ival; while(true) { boolean tag=false; ival=r.nextInt(m); for(int i=0;i<index;i++) { if(arr[i] == ival) { tag=true; break; } } if(!tag) { arr[index++]=ival; } if(index == n) { break; } } Arrays.sort(arr); for(int a:arr) { System.out.println(a); } }
利用一個標記位 Boolean tag 來實現判斷該數組是否含有剛生成的隨機數,沒有則添加進數組,有則重新生成,傳遞兩個參數 ,打印n個m範圍內的不重複隨機數。blog