#if !efun_defined(shuffle)
/**
* This method randomizes an array. It places all the elements of an
* array back in random order.
* @param args the array to shuffle
* @return the randomized array
* @see roll_MdN()
* @see efun::random()
*/
mixed shuffle( mixed arr ) {
int i, j, sz;
mixed tmp;
if( !pointerp( arr ) )
return ({ });
if( ( sz = sizeof( arr ) ) < 2 )
return arr;
for( i = 0; i < sz; i++ ) {
if ( i == ( j = random( i + 1 ) ) )
continue;
tmp = arr[ i ];
arr[ i ] = arr[ j ];
arr[ j ] = tmp;
}
return arr;
} /* shuffle() */
#endif