作者laechan (小太保)
看板mud_sanc
标题[wizs] 阵列的 random sort 替代方案
时间Mon Nov 9 15:58:42 2009
跟 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