/* -*- LPC -*- */
/*
* $Locker: $
* $Id: shuffle.c,v 1.2 1998/03/24 07:28:59 pinkfish Exp $
* $Log: shuffle.c,v $
* Revision 1.2 1998/03/24 07:28:59 pinkfish
* Add some docs to make the simulefuns more usefully lookupable.
*
* Revision 1.1 1998/01/06 05:13:15 ceres
* Initial revision
*
*/
/**
* Cotains some simul_efuns.
* @author Pinkfish
*/
/**
* 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 *args ) {
int i, j;
mixed temp;
if ( !pointerp( args ) )
return ({ });
if ( sizeof( args ) < 2 )
return args;
for ( i = 0; i < sizeof( args ); i++ ) {
j = random( i + 1 );
if ( i == j )
continue;
temp = args[ i ];
args[ i ] = args[ j ];
args[ j ] = temp;
}
return args;
} /* shuffle() */