9 Aralık 2010 Perşembe

Bağımsız Seleksiyon

Bağımsız Seleksiyon
Seleksiyon kelimesi seçim anlamına gelir. Bağımsız seçim birbiri ile bağlantısı olmayan seçimlere denilir. Örneğin 5 kişi tarafından atılan bozuk paraların yazı-tura gelme olasılıkları birbirinden bağımsız seleksiyonlardır. Fakat bir torba içinden çekilen rakamlar bağımlı seleksiyonlardır. Bağımsız seleksiyon örneğini en iyi şekilde bir tombala örneği ile ya da sayısal loto şans oyunu ile anlatabiliriz.


Tombala ve sayısal loto'yu Bağımsız Seleksiyon gibi düşünmek
Tombala ve sayısal lotoda bağımsız seleksiyonun olduğunu söyleyebiliriz. Bunun için nedenimiz ise her seçim yapıldıktan sonra yapılan karıştırma (harmanlama) seçimin tekrar bağımsız olmasını sağlar. Olan bir şart vardır artık çıkan bir rakam bir daha çıkamaz.

Bilgisayararda bağımsız seleksiyon yapmak
Bunun için ilk olarak bir hafıza grubu oluşturup bunlara karşılık olarak rakamları yerleştiriyoruz. Her bir hafıza hücresi bir rakamı tutunca seçim işlemine başlıyoruz. Çıkan rakamları ayrı bir yerde biriktiriyoruz. Yeni yaptığımız seçimde çıkmış bir rakamın çıkmaması için kullanılan iki yöntem vardır ya hücrelerin boyunu kısaltırız ya da çıkmış bir hücre seçilince çıkmamış bir hücre seçilene kadar seçim yap görevini veririz. Doğru olanı ilk adımdır. Fakat bununda zorlukları vardır. Tüm hücreleri çıkan adrese kadar bir adres kaydırmak gerekir ya da aşağıda anlattığım kendi bulduğum yöntemle çözebilirsiniz.

İlklik ve sonluk
Matemağin bence önemli kullanılabilecek kısımlarından. İlklik ve sonluk başlangıç ve bitiş veya ikisi birden belli olunca oluşurlar. Biz bunun gücünden yararlanacağız. Seçim işlemi gerçekleştikten sonra çıkan rakamı biriktirmeye başlayacağız sonra seçilen hücrenin adresine bilinen son hücrenin değerini atayacağız ve seçim işlemi için artık en son hücreyi almayacağız. Böylece çıkan bir rakam bir daha çıkmadığı gibi uzun bir hafıza adres değişikliği işleminede gerek kalmayacak. Daha fazla bilgiyi programı inceleyerek elde edebilirsiniz.

Son not
Burada önemli olan üç şey var, hücrenin değeri, hücrenin adresi ve hücrelerin alanı. Örneğin programımızda 6 rakam arasından 6 seçim yapmasını isteseydik sadece 6 kez çalışacak ve en fazla 5 adet hücre değişikliği yapacaktır. Programı Visual C++ Builder ile çalıştıracaksanız ismini değiştirmeden bir tane List Box atın. C++ ile çalıştıracaksanız ListBox1 ile başlayan satırlara printf("çıkan %d",seleci[i]); yazın.

{
    int nums[49], select[6], bandwidth=49;
    int address, value, i;

    for (i=1; i<=bandwidth; i++) {

        nums[i]=i;
    }
    for (i=1; i<=6; i++) {
        address=random(bandwidth)+1;
        value=nums[address];
        select[i]=value;
        nums[address]=nums[bandwidth];
        bandwidth--;
    }
    ListBox1->Items->Clear();
    for (i=1; i<=6; i++){
        ListBox1->Items->Add(select[i]);
    }
}

Hiç yorum yok:

Yorum Gönder