[wizs] 陣列的 random sort 替代方案

看板mud_sanc (Sanctuary - 聖殿)作者 (小太保)時間16年前 (2009/11/09 15:58), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
跟 nobu 討論了一下後決定否決使用遞迴的方式。目前得出的替代 方式較簡易,也不需修改系統檔案,各位有空可以嚐試。 mixed a = ({"1","2","3","4","5"}); a = sort_array(a,"random_sort",this_object()); 然後自訂 random_sort 函數如下.. int random_sort(string a1,string a2) { return -1+random(2); } 上面的東西可能有些 wiz 看過,它的原意是對陣列做指定條件的 排序,例如正規寫法,who 裡頭針對戰鬥力排序的程式段如下.. tmps=sort_array(tmps,"sort_users_damage",this_object()); int sort_users_damage(object u1,object u2) { int t1,t2; if(!u1->query("user")) return -1; t1=count_damage(u1); t2=count_damage(u2); if(t1<t2) return 1; if(t1>t2) return -1; } 上面的 return 1 跟 return -1 就是用來決定 u1 u2 在陣列中 的順序用的,也因此,如果讓它們 return 亂數值的時候,就可 以達到打散的目的。 測試的結果: 原陣列:({"1","2","3","4","5"}) 新陣列:({"5","2","4","3","1"}) 還蠻方便的,像樂透隨機跑號就可以用,49個號碼 random 過後 取前七個就是開獎號碼,大補丸可加的屬性高低 random 排序.. Laechan -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.225.163.161
文章代碼(AID): #1Azyksz7 (mud_sanc)
文章代碼(AID): #1Azyksz7 (mud_sanc)