Java抽签小程序(可控制抽几个人)(利用随机数与数组想结合)
生活随笔
收集整理的這篇文章主要介紹了
Java抽签小程序(可控制抽几个人)(利用随机数与数组想结合)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
拿宿舍抽簽來舉例子(宿舍抽簽出人去干活,6人間)
直接先上代碼,再解釋
第一步 ; 決定抽幾個人并創建數組
利用Scanner從鍵盤錄入要抽取的人數x(本例子為6),并創建有x個元素的數組
System.out.println("請輸入你要抽取的人數");Scanner scanner=new Scanner(System.in);int x=scanner.nextInt();int[]a=new int[x];第二步 ;引入key與randomNum
為了生成不重復的隨機數,除了引入隨機數以外我們用一個key來當作一個衡量。
int randomNum = 0;int key=0;第三步 ;生成不重復的隨機數
for (int i = 0; i < a.length; i++) {randomNum=(int)(Math.random()*x+1);//生成x個隨機數if(i==0) {randomNum=a[i];continue;}for (int j = 0; j <= i; j++) {if(a[j]==randomNum) {key=1;}}if(key==0) {a[i]=randomNum ;}else {i--;key=0;continue;}在這里對第三步第二行的這里的+1給出一個解釋。
randomNum=(int)(Math.random()*x+1);Math.random()返回一個double類型的0.0-1.0之間的數值,包括0,不包括1,這個數值*100,那范圍不就是0-100(不包括)了么。強轉之后范圍就是0-99,為了達到我們手動選擇生成幾個隨機數的目的,讓其+1.
總之一句話解釋就是由于強轉的原因,范圍縮小了1,現在給它補回來。
進入正文解釋
首先根據注釋得知,先生成x(6)個隨機數。
randomNum=(int)(Math.random()*x+1);//生成x個隨機數其次,當i==0時,記錄下此時的隨機數并放入數組a中成為下表為0的數組中的第一個元素a[i]=randomNum
(a[0]=第一個隨機數)
然后使用continue結束語句使for循環后面的內容正常進行。
若a[1]=randomNum(與a[0]重復了),則使key=1,并使i–,key=0(再循環一次),
若a[1]與a[0]不同,則將其放入數組中稱為下標為1的數組中的第二給元素。
總之著兩句話的意思用一句話解釋就是
在將隨機數放入數組前進行一個判斷
若是數組里的數與新生成的數有重復則再生成一次隨機數,若是無重復則
將其錄入數組中,直到錄完并形成你所需要的數組。
我已經盡力寫的詳細了,我覺得有時候真的是人的懶推動了技術的進步(手動滑稽)
總結
以上是生活随笔為你收集整理的Java抽签小程序(可控制抽几个人)(利用随机数与数组想结合)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【GPS】 根据GPS坐标求取两点间距
- 下一篇: java 检索ldap,从LDAP(Ja