До появления RandomSample я интенсивно использовал приведенную ниже функцию MathGroup, хотя RandomSample на моей машине быстрее, по крайней мере, на одну величину.
In[128]:= n = 10;
set = Range@n
Out[129]= {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
In[130]:= Take[set[[Ordering[RandomReal[] & /@ Range@n]]], n]
Out[130]= {8, 4, 5, 2, 3, 10, 7, 9, 6, 1}
Другая проблема, помимо производительности, заключается в том, что если один и тот же случайный реал попадет дважды (маловероятно, хотя возможно), то порядок не даст эти два в случайном порядке.