facebook


twitter




Fisher-Yates Shuffle Metodu (Generic Method)
0
yazar: vedattaylan | tarih: 29.07.2011 22:42:01

İ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.

 

 

etiketler: csharp

Bu makaleye henüz yorum yapılmamış.

Ad Soyad E-posta Web Sitesi


Bu kategorideki diğer makaleler