This function shuffles (randomizes the order of the elements in) an array.
It uses a pseudo random number generator that is not suitable for
cryptographic purposes.
Note:
If two members compare as equal, their relative order in the sorted array is undefined.
Note: This function
assigns new keys to the elements in array.
It will remove any existing keys that may have been assigned, rather
than just reordering the keys.