I think you've got some good answers here already, perhaps all you need, so just ignore this answer if it's distracting :) ... but I'll post a response, that I think is too long for a comment, anyway.
In the case you want to pre-calculate all permutations: there are good resources here on CP, just search. You can find articles that use recursion, that don't use recursion, and use generics. I recommend this article which does use generics:[
^].
While I think it's unlikely, my response here is going to consider the case where you do not want to actually manipulate the order of elements in the array.
Do you have an array of numbers here, like: private int[] intAry = new int[] {1,5,3,6}; : or, is it possible your list of numbers refers to certain indexes in an existing array ?
Is the size of the numeric sequence you use fixed ?
If it's the (yes, unlikely) case that you are going to use your random sequence to generate a subset of an array taken #n elements at a time based on using the "scrambled" numeric sequence as a list of indices: that's a different scenario !
When you say "generate a random sequence," does that mean it's okay to shuffle the elements in the array randomly, or, are you saying you want to generate a new array ? Or just some new representation of the "scrambled" numbers ?
Given the possible permutations of sets of all items in the array is #n factorial, giving you, for example, only 24 possible unique combinations for a four element array, how are you going to handle coming up with duplicate results at least every #n factorial combinations ? Well, maybe that doesn't matter ? Would it be okay, for example, to get the same randomized sequence twice in a row: that could be coded for pretty easily.
Finally, if you are dealing with a fixed number of array elements, and the number is small, and you need to frequently access the randomized sequence, you might consider just generaring all possible randomized sequences once, and storing those in a list, and then randomly selecting from that List ?