İlk kez 1964 yılında Durstenfeld tarafından hayata geçirilen Fisher-Yates Shuffle methodu ile, her türlü dizi tipindeki elemanları rastgele olarak sıralayabilirsiniz. Burdaki amaç tüm dizi tipleri için doğru ve etkili bir şekilde karıştırma yöntemi uygulamak.
Basit olarak örnek bir senaryo vermek gerekirse. Örneğin online olarak bir sınav yapacaksınız ve 10 adet soru var. Ancak bu soruları veritabaından geldiği gibi herkese aynı sırada sunmak istemeyebilirsiniz. Her öğrenciye farklı sıralamalarda gelmesini isterseniz Shuffle methodu işinize yarayacaktır.
İlk önce herhangi tür dizi tipinde gelecek olan veriyi karıştrmak için Shuffle Metodumuzu oluşturalım.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
/// <summary>
/// Summary description for ShuffleMethod
/// </summary>
public class ShuffleMethod
{
static Random _random = new Random();
public static void Shuufle<T>(T[] array)
{
var random = _random;
for (int i = array.Length; i > 1; i--)
{
int j = random.Next(i);
T tmp = array[j];
array[j] = array[i - 1];
array[i - 1] = tmp;
}
}
}
Class Metodumuz hazır. Şimdi geldi onu kullanmaya. Örnek olarak int tipinde 1’den 9’a kadar bir diziyi karışık olarak Shuffle metodumuzdan isteyelim.
int[] array = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
ShuffleMethod.Shuufle(array);
foreach (int value in array)
{
Response.Write(value);
}
Sonuç : 815279436
Sonuç olarak her bir istekte dizi elemanlarımızı rastgele karışık olarak alıyoruz.
Hoşçakalın.