Re: [J2SE] 請教把1~6隨意排序

看板java作者 (衝! 衝!)時間18年前 (2007/09/01 02:46), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串3/7 (看更多)
※ 引述《rosemary (迷迭香)》之銘言: : ※ 引述《rosemary (迷迭香)》之銘言: : : 大家好,第一次在此板發表文章, : : 有不周到之處請大家告訴我 ^^ : : 我想要寫一隻隨意把連續的數字打散的程式, : : 例如1~6號,執行之後 可能變成 2,5,1,6,4,3 : : 搜尋網路,看到很多很精彩的排序程式, : : 可是要把排序打散...不知道用什麼java語法可以達成想要的功能呢? : : 謝謝大家 ^^ : 後來寫出來了 ^^ 提供給大家參考 : private static String[] shuffle(String[] team) { : int teamlength = team.length; : double[] temp = new double[teamlength]; : double tempd; : String temps; : //先產生亂數,分配給每一組 : for(int i=0;i<teamlength;i++){ : temp[i] = Math.random(); : } : //對亂數排序,順便就把組順序調動, : for(int i=0;i<teamlength;i++) { : for(int j=teamlength-1;j>i;j--) { : if(temp[j]<temp[j-1]) { : tempd = temp[j-1]; : temp[j-1] = temp[j]; : temp[j] = tempd; : temps = team[j-1]; : team[j-1] = team[j]; : team[j] = temps; : } : } : } : return team; : } : public static void main(String[] args){ : String team[]={"第一組","第二組","第三組","第四組","第五組","第六組"}; : shuffle(team); : for(String s:team){ : System.out.println(s); : } : } 略.... Random rand=new Random(); for (int ii=1, d1=1, d2=(team.length-ii+d1)/d1; d2>0; d2--, ii+=d1) { int iWhich = (int) ((team.length - ii) * rand.nextDouble() + ii); String sTmp = team[iWhich - 1]; team[iWhich - 1] = team[ii - 1]; team[ii - 1] = sTmp; } return team; ....略 之前在網路上看到的 覺得還不錯 參考一下吧 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.127.32.76

09/02 12:09, , 1F
感謝 ^^
09/02 12:09, 1F
文章代碼(AID): #16s67gzJ (java)
討論串 (同標題文章)
文章代碼(AID): #16s67gzJ (java)