# usage @perm = &permutation ( $Q , 0 ) ; sub permutation { # returns a permn of 0..Q offset by offset eg 0/1 local ( $Q , $offset ) = @_ ; for ( local($q) = 0 ; $q <= $Q ; $q ++ ) { $qs[$q] = $q + $offset ; } for ( local($n) = 0 ; $n <= $Q ; $n ++ ) { # $from = $n ; $q = int ( rand($#qs+1) ) ; $to[$n] = splice ( @qs , $q , 1 ) ; print "to[$n] = $to[$n]\n" if ( $verbose >=3 ) ; } print "Here is a perm $Q:\n" if ( $verbose >=3 ) ; print join ( ':' , @to ) , "\n" if ( $verbose >=3 ) ; return ( @to ) ; }