Besides being related to Sattolo's Algorithm, its optimized running time of Big O of n is achieved through making use of the back of the array, and it operates by iteratively finding a random number k in the range 1 to n and then swapping the elements at the k and n positions.  
A parallel implementation of this algorithm by Gustedt et al notes that the implementation of it by Moses and Oakford and Durstenfeld causes many cache misses due to accessing memory unpredictably, a parallel algorithm that makes heavy use of recursive sampling of a communication matrix.  One variant of this algorithm operates on the range 1 to n - i rather than 1 to n - i + 1 at each step and allows for cyclic varieties of its output.  Besides being related to Sattolo's Algorithm, its optimized running time of Big O of n is achieved through making use of the back of the array, and it operates by iteratively finding a random number k in the range 1 to n and then swapping the elements at the k and n positions.  For 10 points, name this algorithm for randomly ? permuting the elements of a set, sometimes named for the computer scientist who created the MMIX computer architecture and who popularized the algorithm in his The Art of Computer Programming.
A parallel implementation of this algorithm by Gustedt et al notes that the implementation of it by Moses and Oakford and Durstenfeld causes many cache misses due to accessing memory unpredictably, a parallel algorithm that makes heavy use of recursive sampling of a communication matrix.  
{Fisher}-{Yates Shuffle} [or {Knuth Shuffle}]