No problem!
2011/1/13 natalia Vikhtinskaya <natavi.m...@gmail.com> > THANK YOU AGAIN!!! > > 2011/1/13 Juan Pablo Califano <califa010.flashcod...@gmail.com>: > > PS: > > > > I mentioned that a random sort was not the best approach. > > > > Here's a better way to randomize an array: > > > > public static function shuffle(array:Array):void { > > var tmp:*; > > var cur:int; > > var top:int; > > > > cur = top = array.length; > > if(top) { > > while(--top) { > > cur = Math.floor(Math.random() * (top + 1)); > > tmp = array[cur]; > > array[cur] = array[top]; > > array[top] = tmp; > > } > > } > > } > > > > > > 2011/1/13 Juan Pablo Califano <califa010.flashcod...@gmail.com> > > > >> 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 > > > > _______________________________________________ > 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