سلام
ابتدا آرایه مورد نظر را تولید می کنید و سپس به صورت رندوم آرایه را به هم می ریزید که تابع Shuffle که نوشتم کارش همینه
اوردرش هم( O(n می شه
public static class RandomShuffle
{
private static void Swap<T>(this IList<T> input, int ilhs, int irhs)
{
T temp;
temp = input[ilhs];
input[ilhs] = input[irhs];
input[irhs] = temp;
}
public static void Shuffle<T>(this IList<T> input)
{
Random rnd = new Random();
for (int i = input.Count; i > 0; i--) {
input.Swap(rnd.Next(0, i), i - 1);
}
}
}
نحوه استفاده
var arr = new int[]{1,2,3,4};
arr.Shuffle();
foreach (var element in arr) {
MessageBox.Show(element.ToString());
}