[wizs] 陣列的 random sort 替代方案
跟 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
mud_sanc 近期熱門文章
PTT遊戲區 即時熱門文章
51
111
47
79
6
15