Commodore sayı 13, sayfa 60
Sayfanın metni

Sayfa 60

Ancak, bilgisayardaki rastlantısal sayılar üreticisi, bir zarı taklit etmeye çalışıyor da olsa, buradaki durum biraz farklıdır. Buradaki işlem, her biri farklı sayılar taşıyan, sözgelimi 999,999 bilyalı bir lotto oyununa benzer. “Üretici” (generator) bir kere çekmiş olduğu bilyayı, bu ikinci kere çekme şansına sahip değildir. Ancak, bilyalar üzerindeki 1,2,3,... şeklindeki tamsayılar değil, O ila 1 arasında yeralan ondalık sayılar olduğunu unutmayalım. Bu tür bir tercihin yararı açıktır: Böylelikle kullanıcı kendi gereksinmelerine bağlı olarak, rastlantısal sayıyı bir çarpan aracılığıyla dilediğince yükseltebilir. El kitaplarında da verilen buraya kadarki bilgilerle bile bir şeyler yapılabilir. Rastlantısal sayılardan birincisinin X ekseni (yani yatay eksen) üzerindeki bir koordinatın değeri olduğunu düşünelim; ikincisi ise bir Y değeri olsun. Bu durumda, her çift atış 1 x 1'lik bir düzlem üzerinde bir noktaya rastlantısal bir konum kazandıracaktır. Bunu bir “atış”” olarak düşündüğümüzde, üretici (generator) tıpkı dikdörtgen bir hedef tahtasına rastgele atış yapan bir tüfek gibi davranıyor olacaktır. Bu tür bir alıştırmanın pratik yararına gelincei: Uzun vade dikkate alındığında, diyelim ki bir milyon atıştan sonra, hedef tahtasının her tarafı aynı oranda isabet alacağından, örneğin 1 yarıçaplı dörtte bir daireye düşen isabetlerinin payının toplanması yeterli olacak ve böylece de II sayısının değeri zar atışı ile belirlenebilecektir; çünkü dörtte bir dairenin alanı 11/4 (1x1x3,14:4)'tür. “Zarların rastlantısı” anlaşılıyor anlaşılmasına da, bu rastlantı bilgisayara nasıl girmektedir acaba? Eğer bu sorunun yanıtını henüz bilmiyorsanız, o halde sıkı durmalısınız: Tüm milyon atıştan ancak ilki gerçekten rastlantısaldır. Gerisi ise, rastlantı gibi gözüküyorsa da, göz boyacılığından başka bir şey değildir. “Üretici” ye ilk atış yaptırıldığında, üretici belli bir yazmaçtan (Register) ve o anda rastlantısal olarak orada bulunan bir sayıyı çeker. Bu, içinde zamanın mikrosaniye sayısı bulunan bir yazmaç olabileceği gibi, bazı bilgisayarlarda görüldüğü üzere program yapabilen bir yazmaç da olabilir. Daha sonra bilgisayar gerçekten rastlantısal olan bu sayıyı başlangıç değeri olarak, programlanmış bir rutine yerleştirir, ikinci “rastlantı”'nın sayısını hesaplar, hesapladığı sayıyı alır ve bunu yeniden rutine yerleştirir; bu işlem, istenirse milyon defa yinelenebilir. Sayılar bir algoritma aracılığıyla üretildiklerinden, ardarda yapılan atışlar birbirlerinden bağımsız değillerdir. Bundan dolayı, zarlar ya da rulet bilyaları gibi fiziksel üreticilerin tersine, bu sayılar ““sözde rastlantısal sayılar”” olarak adlandırılmışlardır. Pek çok BASIC versiyonunda bilgisayarın başlangıç değerini kaydetmesi bir komutla sağlanabilmektedir. Bu durumda bilgisayar, bütünüyle aynı sayılardan oluşan ve sıra ve düzen bakımından da birincisine tam tamına denk düşen ikinci bir zar serisi oluşturabilmektedir. Buna, somut olarak, her başlangıçta AND-fonksiyonunun aynı ve eksi bir parametre ile harekete geçirilmesi sayesinde ulaşılabilmektedir. Hangi sonuçlarının ortaya çıkacağının saptanabiliyor olması rastlantı kavramının anlamı düşünüldüğünde, ne denli hayal kırıklığına uğratıcı ise de, pratik bir değer taşımaktadır. Yer darlığı nedeniyle milyonlarca sayının RAM-deposunda depolanma imkânı bulunmamaktadır; bunların algoritmanın “zekâsında” saklanması çok daha kolay bir depolama yoludur. Atışlar bağımsız ve rastlantısal değillerse, kullanılmasına ne gerek vardır? diye sorulabilir. Bu konuda sözü saat zamanına bırakmak her zaman için daha doğru olmaz mıydı? Bu elbette mümkündür. Bunun için RND-fonksiyonu harekete geçirildiğinde “Argument”'i 0 yapmak yeterlidir. Fakat gene de, bu yöntem birçok durumda soruna bir çözüm getirmeyecektir. Bir düşünülecek olursa: Bir program şeridi sık sık akıp geçecek ve her defasında bir rastlantısal sayı buna eşlik edecektir. Ama bilgisayar, belki bir program şeridini işlerken hep aynı zamana gereksinme duyduğundan, bu durum, sayıların sistematik olarak farklılık göstermelerine ya da tümünün de eşit olmasına yol açacaktır ki, bu da hiç katlanılacak bir durum değildir. Algoritmalarla verilen rastlantısal sayılara gelince, burada durum daha başkadır. Gerçi bunlar bağımsız değillerdir, ama özelliklerinin sınanması amacıyla bir istatistikçiye sunulurlarsa ve bu arada sayıların nereden çıktıkları kendisine bildirilmediği takdirde, istatistikçi buradaki rastlantısal olmama durumunu kanıtlayamayacaktır. Daha önce sözü geçen hedef tahtası örneğinde, hedef tahtası 10x10 alana bölünmüştür. Tek tek her alandaki isabetli vuruş sayıları aracılığıyla buradaki eşit dağılımın yetkinliği konusunda ilk görsel izlenimi edinmek mümkündür. İstatistikçiler burada anlamlı isabet sıklıklarının hangi alanlarda toplanmış olduklarını bulmak için bir dizi sınama yöntemi uygulayabilirler. Alanları ikişer ikişer, üçer üçer ya da herhangi bir gruplama tarzında gözlemleyebilirler. Sonuçta ise, sayı dizilerinde bir sistematiklik kanıtlanamamaktadır. Elbette “rastlantı”” sayılarının bu düzeyde olanlarını sıradan bir algoritma ile elde etmek mümkün değildir. Bunun için bilgisayarın ortaya çıkışından bu yana çok değişik hesaplama yöntemleri düşünülmüş ve denenmiştir. Uzun bir süre için, bir sayının karesini almak ve bu işlem sonunda çıkan sayının orta kısmını oluşturan sayıyı “yeni sayı”” olarak kabul etmek için yaygın bir yöntem olmuştu (Örneğin, 45086273 x 45086273 — 2032 7720130303 0529. Buradaki altı çizili sayı elde edilen yeni sayıdır). Ama bu yöntemin istatistiksel açıdan yetersizlikleri vardır. Bugün kendini kabul ettirmiş olan algoritma yöntemidir. Bu yöntemin özü şudur: A ve P gibi iki tamsayı değişmez alınır, tamsayı bir başlangıç değeri seçilir, bu değer A ile çarpılır, çıkan sonuç da P'ye bölünür; bölme işlemi sonucunda arta kalan Z sayısı “yeni sayı”” olarak kabul edilmektedir. Bununla da yeni bir süreç başlatılabilir. “Sözde rastlantı”'nın gizi işte bu denli açıktır. RND-fonksiyonunu BASIC'te uygulamak istediğimizde, bütün bu sayıların seçimiyle uğraşmak zorunda değiliz. A ve P değişmezlerinin “üretici” üzerine etkisi konusunda pek çok bilimsel yapıt mevcuttur. Burada özellikle ilginç olan nokta şudur: A ve P, her ikisi de asal sayı olmak zorundadır, yani örneğin 7 sayısı gibi, yalnızca kendi kendisiyle bölünebilen birer sayı. (Ayrıca da, A P'den daha küçük olmalıdır: A <P) O zaman “üretici”” kendini tekrara kaptırmaksızın miktar olarak en çok düzeyde rastlantısal sayıya ulaşabilir. P'ye bölünme işlemi sonucunda arta kalan sayı ancak 1,2,3,...p-1 olabileceğinden, üretici de, kendi kendini tekrarlamadan önce, ancak P-İ sayılarını fırlatıp atabilmektedir. O halde, “üretici''ye sokulabilecek P sayısı ne denli büyükse, onun ““period”'u da o denli büyük olmaktadır. BASIC-versiyonlarında “*period”''- lar yaklaşık 1 milyon kadardır. Basit kullanımlar için bu sayı tam anlamıyla yeterlidir. Daha masraflı projeler için, IBM'in büyük bilgisayarları 64 Bit'- lik veri sözcükleri çerçevesinde 2?! üstü bir P sayısını barındıracak bir mekan sunmaktadır. Bunun anlamıysa şudur: Bir “period''da 2 milyar rastlantısal sayı bulunmaktadır. Çok üst düzeyde teknik-bilimsel problemlerin ele alındığı kurumlarda kullanılan ve büyük bilgisayarların kralları sayılan Cray ya da Cyber 205 ise, P-değerleri için 46 Bit kullanabilirler ki, bu da P — 2*6 olarak tam sayımına 70 trilyon rastlantısal sayılı bir “period” demektir. İnsanın aklına bunun yeterli olduğu geliyor değil mi? Jülich'deki Nükleer Araştırma Kurumu'nun (KFA) fizikçileri aynı görüşte değiller. Bu muazzam sayılara rağmen, ““üretici”'nin verim yeteneğinin sınırlarına çarpmaktadır bu kişiler. Orada sözkonusu olan şey nedir? Fizikçiler modelleştirmeler yoluyla bilgisayara, örneğin belli bir derecenin üstünde ısıtıldığında sürekli manyetik gücünü birdenbire yitiren demir gibi bir cevherin hareketini taklit ettirirler (simulation). “Bir evreden başka birine geçiş” olgusu fiziğin en önemli problemlerinden biridir. Atomların birbirlerine etkileri konusunda tasarımlarımız ancak bir model çerçevesinde mümkün olabilirken, tek tek atomların istatistiksel hareketlerine ilişkin olarak bildiklerimiz daha ayrıntılıdır. Bilgisayarın bu konuda yapması gereken şeye gelince, şu söylenebilir: Bilgisayar, bu atomların rastlantısal bir davranışını zar atarak belirler. Bilim adamları için de atomların birbirlerine etkileri konusunda geliştirdikleri kendi model kuramlarını güvenilir bir tarzda hesaplamak ve sınamak ancak bu sayede mümkün olmuştur. “Rastlantı gücünün çabuk tükenmesi ise şundan dolayı olmaktadır: “Üretici” on binlerce atom için binlerce enerji ve salınım durumunu zar atarak belirlemek ve bütün bunları binlerce zaman aralığı içinde ardarda yapmak zorundadır. Buysa, hedef tahtamızın iki değil, milyarlarca boyutu varmış gibi bir durum yaratır. Ve nihayet tek bir zar atımıyla yaratılan durum ile de yetinmek mümkün değildir. Rastlantısallıkların açığa çıkmaları için bu oyunun yüzlerce ve binlerce kez yinelenmesi gerekmektedir. Bütün bunlar ise, tabii ki ““üretici”'yi ikinci bir kez çalıştırmaksızın yapılmalıdır. Bilim adamlarının burada bir sınıra gelip dayanmaları sadece

Klavyeyle gezinmek için ← ve → tuşları.