Voici une fonction toute simple et efficace qui permet de randomiser (je ne sais que ce n'est pas français mais il n'y a pas d'équivalent) l'ordre d'une liste d'éléments. Vous pouvez vous en servir, par exemple, pour faire varier l'ordre d'apparition de bannières sur un site.
function ListRandomiseur(ListARandomiser) {
var local = StructNew();
if (ArrayLen(Arguments) gte 2) {
local.iElements = Arguments[2];
}
else {
local.iElements = ListLen(arguments.ListARandomiser);
}
local.lstRandom = "";
local.ListARandomiser = ListSort(arguments.ListARandomiser, "text");
// convertir en tableau par souci de rapidité
local.TabARandomiser = ListToArray(local.ListARandomiser);
for (local.i=1; local.i lte local.iElements; local.i = local.i+1) {
if (ArrayLen(local.TabARandomiser) neq 0) {
local.iRandom = RandRange(1, ArrayLen(local.TabARandomiser));
local.lstRandom = ListAppend(local.lstRandom, local.TabARandomiser[local.iRandom]);
ArrayDeleteAt(local.TabARandomiser, local.iRandom);
}
else {
// plus d'éléments dans la liste
break;
}
}
return(local.lstRandom);
}
Utilisation : <CFSET LeResultat = ListRandomiseur(votreListe)>
7-30-2008
7-26-2008
7-25-2008
7-24-2008