PDA

Просмотр полной версии : as2: как перемешать массив?


Mnilionic
28.04.2006, 02:48
как лучше перемешать массив?
я делаю так:

function Shuffle(x) {
var tmp = x.concat();
var new_x = new Array();
while (tmp.length>0) {
var rnd = random(tmp.length);
new_x.push(tmp.splice(rnd, 1));
}
return new_x;
}

b = ["a", "b", "c", "e", "f"];
b = Shuffle(b);
trace(b);

но когда много и часто начинает тормозить.

MIX-er
28.04.2006, 03:11
сори, но зачем????

7thsky™
28.04.2006, 03:53
карточные игры например...

Mnilionic
28.04.2006, 04:15
MIX-er, знаешь как по другому?

son_of_war
28.04.2006, 08:10
попробуй так
Array.prototype.shuffle = function()
{
for (var i=0; i<this.length; i++)
{
var x = random(this.length);
var tmp = this[x];
this[x] = this[i];
this[i]=tmp;
}
}

Juice_Green
28.04.2006, 10:30
попробуй, так еще проще:

var arr:Array = [1, 2, 3, 4, 5];
function randsort(x:Number, y:Number):Number {
if (zn = Math.random() > 0.5)
return 1;
else
return -1;
}

arr.sort(randsort);
trace(arr);

K.A.T.A.F.A.L.K.E.R
28.04.2006, 10:40
function res(x:Number, y:Number):Number {
return 1-2*Math.round(Math.random());
}
a.sort(res);