Re: [J2SE] 請教把1~6隨意排序
※ 引述《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
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 3 之 7 篇):