Merhaba sevgili e-bergi okuyucuları, sizlere bu ilk yazımda rastgelelikten bahsetmek istiyorum. Rastgelelik konusu felsefik, matematiksel, fiziksel birçok açıdan ele alınabilecek bir konu ancak ben burada tabi ki bir bilgisayar bilimcinin bakış açısıyla ele alacağım.
Öncelikle, rastgeleliliğin tanımıyla başlamak daha mantıklı olacaktır. Rastgeleliğin çeşitli tanımları mevcut olmasına rağmen tam olarak tartışmasız herkesin kabul ettiği bir tanımı yoktur. Genel olarak karmaşa, kaos, tahmin edilemeyen durum olarak tanımlanan rastgelelik ayrıca Aristo tarafından mantıksal çözümü olmayan durumlar olarak ta tanımlanmıştır. Aristo'nun tanımı biraz anlaşılmaz görünse de onu güzel bir şekide açıklayan görece ünlü bir paradoks mevcut, Buridan'ın eşeği. Paradoks şöyle ki; bir eşeğin iki tarafına da birer demet ot koyulduğunda bunlar arasında hiçbir fark yoksa, eşeğe olan mesafeleri eşitse yani her açıdan eşit özelliklere sahipler ise eşek aralarında bir seçim yapamaz ve sonunda açlıktan ölür. Tabi ki, gerçekte olacak durum bu değildir. Eşek birini yiyecektir, ancak burada mantıksal olarak bir seçim yapmak mümkün olmadığı için bu davranış Aristo'nun tanımına göre rastgele olarak nitelendirilir.
Kafanızda rastgelelik kavramının daha iyi oturduğunu umarak, rastgelelik kavramının bilgisayarda nasıl ele alındığından bahsetmek istiyorum. Bir musibet bin nasihattan iyidir mantığıyla bir örnek verelim. Bir kullanıcı için müzik çalarında Moby'den sonra Eminem çalması ardından Zeki Müren gelip Marilyn Manson ile devam etmesi gayet rastgele olan bir sıralamadır. (Tabi bunu özellikle yapmadıysa...). Bununla birlikte bu müzik çaların listesindeki dosyaların belirli bir düzeni olsa dahi, bu oynatma sırasının öyle bir özelliği yoktur ve burada kullanıcının bu sıralamanın rastgele olduğuna kanaat getirmesi için tek gereken de kullanımdaki ardışık verilerde (bu örneğimizde veri dediğimiz çalan müzik dosyaları oluyor) bir düzenin olmamasıdır.Bunun bilgisayar için karşılığını anlatmak gerekir ise; veriye erişimin belirli bir sıraya koyulmasından sonra çeşitli RNG (Random Number Generation, Rastgele Sayı Üreten) fonksiyonlarla sıralı parametreler kullanılarak (örneğin f(1), f(2), f(3) şeklinde) ya da zamana bağlı bir şekilde çağrılmasıyla elde edilen sayıya karşılık gelen elemana ulaşmaktır. Yani bilgisyara da rastgele olarak ne elde etmeye çalışırsak çalışalım, aslında bize istediğimiz rastgeleliği sağlayan arka planda elde ettiğimiz sayılardır. İşte bu noktada kullanılan RNG fonksiyonun algoritması önem kazanmaya başlamaktadır çünkü bütün rastgelelik o fonksiyonun sayısal çıktıları arasındaki rastgeleliğe bağlıdır. Onlar ne kadar düzenden uzaksa onlardan elde edilen sonuçlar da o kadar tesadüfidir. Eğer müzik çalarınızı rastgele modda kullanırken aynı şarkıyı arka arkaya en az iki kez dinlediyseniz ve eğer deja vu yaşamıyorsanız, bu durum muhtemelen kötü bir RNG algoritması kullanılmasının sonucudur. Bu şu anlama geliyor; RNG algoritmalarının en iyisi, mükemmeli her yerde kabul görmüş bir hali yoktur. Peki neden kusursuz bir matematiksel model oluşturulmuyor. Aslında bu soruyu oluşturulmuyor olarak değil de oluşturulamıyor diye sormak daha doğru olur. Bunun sebebi soruya cevapları verdiğim zaman daha rahat anlaşılacağı için 2 temel sebebine geçmek istiyorum.
2. Matematik, nesneler arasındaki ilişkiyi bulup ortaya çıkarmak ve daha sonra yeni bilgilere (veya nesnelere) bu ilişkiler ışığında ulaşmayı amaçlar ve bizim rastgelelikte aradığımız bunun tam aksine ardışık nesnelerin düzensiz ve ilişkisiz olmasıdır. 3. İkinci sebep ise günümüz bilgisayarlarının determinist bir yapıya sahip olmasıdır yani verilen girdiye göre alınacak çıktı bellidir diğer bir deyişle tahmin edilebilir sistemlerdir.
Tabi ki, RNG algoritmaları da bunun istisnası değil. Bu anlamda gerçekten rastgele olan çıktı elde etmek olanaksız gözüküyor. En iyi ihtimalle belli olmayan girdiler yani RNG fonksiyonuyla hiç alakası olmayan ancak bir şekilde bilgisayarda mevcut olan veriyi kullanarak beklenmedik çıktı çeşitliliği sağlanılabilir aksi halde bir noktadan sonra RNG'lerden elde edilecek sayılar da bir düzenin içine girecektir. Fakat belirttiğim gibi problem biraz günümüz bilgisayarlarının yapısıyla alakalı ve ileride kuantum bilgisayarları bu durumun seyrini fazlasıyla değiştireceğe benziyor, en azından teoride bu böyle.
Özetle rastgelelik belirli bir düzenden yoksun olmak veya mantıksal çıkarımlar ile sonuca ulaşamayıp yine de bir seçim yapmış olma durumudur ve şu an için bu rastgeleliği bilgisayarda sağlayabilecek, gerçekten kaliteli denilebilecek bir algoritma pek mümkün gözükmüyor. Bununla birlikte gelecekte kuantum bilgisayarları artık pratiğe yansıtıldığında, çalışan bir model geliştirildiğinde durum oldukça farklı olacak gibi duruyor. Kuantum bilgisayarlarının tahmin edilemeyen işleyişi sayesinde rastgele sayı üretmek dolayısıyla rastgele çıktı almak şu an ki kadar zor olmayacaktır. Umarım anlattıklarımda yeterince açık olabilmişimdir. Başka bir yazıda görüşmek üzere...