Try this: function uniqueRandomInt(min:Number, max:Number, n:Number) { var a:Array = []; var i:Number = min; while (a.push(i++)<max); a.sort(function (a:Number, b:Number) { return Math.floor(Math.random()*3)-1; }); return a.slice(0,n); }
Although a random sort is not the best means to randomize an array, it should work reasonably. The problem with your code was this line: Math.random()*2-1; Your sort function should return 3 diferent values (n < 1, n = 0 and; n > 0) as evenly distributed as possible. Math.random gives you a number that is great or equal to 0 and *less* than 1. It will not give you 1 back (0.999999999, but not 1). So if you do: Math.random() * 2 You'll either get 0 or 1 (with decimals); it's not posibble to get 2. You should instead use 3 as the multiplier and floor it; the result should be 0, 1 or 2 (this will have as much randomness as Math.random provides). Now substract 1 and you'll get -1, 0 or 1, which is what you want for your sort function. Cheers Juan Pablo Califano 2011/1/13 natalia Vikhtinskaya <natavi.m...@gmail.com> > Hi > I use function that creates unique array > > function uniqueRandomInt(min:Number, max:Number, n:Number) { > var a:Array = []; > var i:Number = min; > while (a.push(i++)<max) { > ; > } > a.sort(function (a:Number, b:Number) { return > Math.random()*2-1;}); > return a.slice(0, n); > } > > It works fine for AS2. But for AS3 it gives always the same result > if I ask > uniqueRandomInt(1, 6, 6); I always get 4,2,3,1,5,6 > > What is wrong in this code for AS3? > > Thank you in andvance. > _______________________________________________ > Flashcoders mailing list > Flashcoders@chattyfig.figleaf.com > http://chattyfig.figleaf.com/mailman/listinfo/flashcoders > _______________________________________________ Flashcoders mailing list Flashcoders@chattyfig.figleaf.com http://chattyfig.figleaf.com/mailman/listinfo/flashcoders