Neden rastgele denemeler yapıyoruz ki small_ticket? Bir düşünelim, diyelim ki 5 tane elemanımız var. Kaç kombinasyon oluşur? 5! [5 faktöriyel] değil mi? Yani 120 farklı kombinasyonumuz var. Pekala, bunu rastgele elemanlar deneyerek bulmaya çalışırsak; o zaman 120.elemanın bulunması şansı 120'de bir olacak ve bunun doğru olup olmadığını görebilmek için, önceki 119 elemanla karşılaştırmamız gerekecek. Sonra bir de ne görelim efendim; 113.elemanın aynısıymış; haydi baştan...
Haydi 5 elemanda bulunur; peki 10 eleman olsa ne olacak? Malum, 10 elemanla oluşacak kombinasyon sayısı: 3.628.800... Bilmem anlatabildim mi..?
Amacımız "zeki" bir algoritma oluşturmak... Bunun için, kendi yöntemimizi bilgisayarın çalışma yapısına uyarlamamız gerekiyor. Siz kağıt üzerinde kombinasyonları nasıl çıkarırsınız bir düşünün önce. Önce elemanları sıralarız; sonra bu elemanları teker teker yer değiştiririz. Mesela ben sondan başlarım bu işi elle yaparken. abc, acb gibi. Yani 1.eleman sabitken, son iki elemanı yer değiştirdim. 1.eleman oradayken oluşabilecek olasılıkları denemiş oldum böylece. Ondan sonra 1.elemanı değiştirip b yaparım ve bac, bca gibi iki kombinasyon daha elde ederim. Sonra da 1.elemanı tekrar değiştirir, cab ve cba yaparım...
Önce bunu N eleman için değil, 3 eleman için çözmeyi deneyebilirsiniz. Böylece karmaşıklıkla uğraşmamış olursunuz. Sonra 4 eleman için, sonra 5 eleman için çözersiniz. Sonra da bunlara dikkatle bakarak olayın doğasının farkına varır ve N eleman için nasıl çözebileceğinizi düşünürsünüz...