### 10 responses to “AS3 Vector shuffle or randomize”

1. Note: We use com.gskinner.utils.Rndm class because it generates random numbers based on a seed number: necessary if you have to reproduce a random output.
If you don’t have or want to use this class, change line 11
var s:Number = Rndm.integer(0, vec.length);
into
var s:Number = Math.round(Rndm.random()*(inVector.length-1));

again Rndm!!! And “inVector”

2. Hey, I came across the same Vector shuffle issue around the time you did too Here’s was my solution:

http://www.milkisevil.com/blog/2010/as3-vector-shuffle-randomize/

In think yours will be more efficient as I’m just hijacking the vector sort method.

By the way, I tried casting a Vector.int to Vector.*, but the vector becomes null within the shuffle method. So did this actually work for you?

3. Great article!
I noticed there is a slight typo in the last line of this post.
Math.round(Rndm.random()*(inVector.length-1));
should be
Math.round(Math.random()*(inVector.length-1));

4. Thanks for the great code snippet! I was looking for a good way to shuffle a Vector.

5. Thanks for the code. Nice help.
But seems like there’s still a typo at:

var s:Number = Math.round(Math.random()*(vec.length));

Where it should read:

var s:Number = Math.round(Math.random()*(vec.length-1));
or
var s:Number = Math.floor(Math.random()*(vec.length));

6. 7. I don’t think
var s:Number = Math.round(Math.random()*(vec.length));
will work.
First of all, since you use round(), getting 0th index is half as likely as getting any other valid index.

Secondly, it Math.random produces Number close to 1, you will get index out of bounds exception because if you have 5 elements in vector then Math.round(0.999*5) = 5 which will cause to access element with index 5 which is not there.

Use this one instead:
var s:Number = Math.floor(Math.random()*(vec.length));