Bilgisayarlar Neden Rastgele Düşünemiyor?

Bilim ve Teknoloji - 30 Aralık, 2020 - Okuma Süresi: 9 Dk.

30 Aralık, 2020

Bilgisayarlar Neden Rastgele Düşünemiyor?

Bilgisayar işlemcileri sandığımız kadar akıllı değillerdir. Öyle ki tamamen rastgele bir sayı bile üretemezler. Peki o zaman nasıl oluyor da şans oyunları yapılabiliyor, rastgele şifreler üretilebiliyor? Bu yazıda bunları açıklayacağız. Üst düzey bilgisayar bilgisi gerekmeden bilinçli yapay zekanın önündeki engellerden birini inceleyelim.

Bölüm 1: Bilgisayarlar gerçekten rastgele düşünemiyor mu?

Birçoğunuz "Madem rastgele içerik üretemiyor o halde nasıl oluyor da şans oyunları yapılıyor, rastgele şifreler üretiliyor, film sayfaları rastgele film önerilerinde bulunabiliyor?" diye düşünüyor olabilir. Bunun cevabı hem çok basit hem de çok karışık. Basit olarak açıklamak gerekirse işlemciler ufak bir sayı üretirken bile referans alır. Bu referans genellikle işlemci saatidir. Geçen mikrosaniyeleri referans alarak bir sayı üretebilir. Referans almadan rastgele bir sayının üretilmesi imkansızdır.
 

Programcıların işini kolaylaştırmak için Intel RdRand isimli bir fiziksel donanımı işlemcilerinin içine yerleştirir. Bu donanım gizli çalışır ve gerçek rastgele sayılar üretebilir. Peki bu rastgele sayıları nasıl üretir? Aslında bu donanım da referans alarak çalışır. Tahmin edilemez bir şeyi referans alır. Neyi mi? Tabiki de insanı. Örneğin kullanıcının ne zaman 'Q' tuşuna basacağının bilinmesi imkansızdır. Kullanıcının girişlerini referans alarak gerçek rastgele sayı üretebilir. Örneğin çok yüksek güvenlik önlemi gerektiren işlemlerde gerçek rastgele sayı üretilir. Bir şifreleme yapılırken kullanıcının mouse hareketi, yönü, hangi zamanda harekete geçirdiği gibi öngörülmesi imkansız verileri referans alıp rastgele içerik üretimi gerçekleştirilebilir. Bu RdRand'ın tam olarak neyi referans aldığı güvenlik açısından gizli tutulmaktadır.

Peki her rastgele içerik üretme işlemi için insan mı referans alınır? Hayır, örneğin oyunlarda işlemci saatini referans alarak aslında rastgele olmayan ama kullanıcıya rastgele gibi görünen içerikler üretilebilir. Bunu birkaç örnekle açıklayalım.

Örnek: Ekrana rastgele 15 adet 6 haneli sayı yazdıran program

(Uygulama kodları C# dilinde yazılmıştır.)

Bu örneğimizde rastgele 15 adet sayı oluşturacağız. Bu sayılar 6 haneli olacak. İlk önce sayılarımızı oluşturalım.

Bilgisayarlar Neden Rastgele Düşünemiyor?

15 adet sayımızı 21 milisaniye sürede hesapladık. Fakat sayılarda bir sorun var gibi. Bu sayılar birbirinden farklı değil. İlk 6 sayı ve diğer sayılar birbirinin aynısı. 15 sayıda birbirinden farklı sadece 2 sayı var. Her ne kadar olasılığı düşük olsa da(6 haneli 6 rastgele sayının üst üste aynı gelme olasılığı yaklaşık olarak 5,31 x 1035'tir.) bir kere daha şansımızı deneyelim ve bakalım bu sefer sayılar farklılık gösterecek mi.

Bilgisayarlar Neden Rastgele Düşünemiyor?

Tekrardan 15 sayı ürettik. Bu sayıları üretmesi 22 milisaniye sürdü. Fakat bu sayılar da birbirinden farklı değil. Bu sefer ilk 5 ve geri kalan 10 sayı aynı. İşte tam burda gerçek ortaya çıkıyor. Bu sayılar gerçek anlamda rastgele değil. 

Peki ama neden rastgele değil? 15 adette sadece 2 adet birbirinden farklı sayı olsa da sonuçta bunlar bilgisayar tarafından üretildi değil mi? Aslında bu 15 sayının hiçbiri gerçekten rastgele değil. Başta da belirtildiği gibi bir referans alınmış durumda. Peki bu sayılar neyi referans almış? Tabiki de bilgisayar saatini. 

Şimdi neden 15 adet sayıda sadece 2 adet birbirinden farklı sayı olduğunu açıklayabiliriz. Bunu anlamak çok basit. İlk 5 sayıyı ele alalım. Sayımız 731407, tam 5 kez tekrar etmiş. İlk satırdaki sayımız üretilirken sistem saatimiz 12 saat 20 dakika 30 saniye 25 salise olsun.(12:20:30:25). Bilgisayarımız bu saat verisini alıp bir dizi matematiksel işlemden geçirip bir sonuç üretti. Bilgisayarımız çok hızlı olduğundan ilk 5 satırı hesapladığı sırada 1 salise bile geçmedi. Yani sistem saati hiç değişmedi. 5 satırda da sistem saati aynıydı. Bu yüzden 5 satırda da aynı saat referans alındı ve referans aynı olduğundan çıkış da aynı oldu. 6. satıra gelindiğinde sistem saati 12:20:30:26 olduğundan dolayı referans alınan saat değişti. Bu yüzden de bambaşka bir çıkış verisi üretildi. Geri kalan 9 sayıda da sistem saati aynı kaldığı için(yani 9 satırın hesaplanması 1 saliseden az sürdüğü için) 6. sayının aynısı üretildi. Tabi ki bilgisayar en küçük saat birimi olarak saliseyi referans almaz. Saliseden çok daha kısa aralıkları referans alır.Örneğin anlaşılması için en küçük birim olarak salise referans alınmıştır.

Şimdi bu durumu anlamak için bir örnek gözlemleyelim

Örnek: Birbirinden farklı rastgele sayı üretiminin gerçekleştiği süreyi hesaplama

Bu örnek şöyle çalışacaktır;
Bir sayı üretilip ekrana yazdırılacaktır, 
Ardından bir sayı daha üretilecektir ve önceki sayıyla eşitliğine bakılacaktır,
Sayılar birbirinden farklı olana kadar sayı üretilmeye devam edilecektir,
İlk farklı sayının üretimi gerçekleştiğinde program duracaktır ve ne kadar süre geçtiği ekrana yazdırılacaktır.

Bilgisayarlar Neden Rastgele Düşünemiyor?

Örnekte de görüldüğü üzere ilk farklı sayıyı bulması 11 milisaniye sürmüş. Bu durumda, Bilgisayarın referans aldığı en küçük saat birimi 11 milisaniyedir diyemeyiz. Çünkü en küçük saat biriminin değişimine program çalıştığı anda ne kadar yakın olduğumuzu bilmiyoruz. Bu yüzden program her çalıştırıldığında farklı milisaniyeler ve sayı adetleri görebiliriz. Bir önceki örnekte de görüldüğü üzere ilk seferde 7. sayıyı, ikinci seferde 6. sayıyı farklı bulduk.

Örneklerden de anlaşıldığı üzere bilgisayarlar referans almadan rastgele sayı üretemezler.

2. örnek bize bilgisayarın farklı bir rastgele sayı üretmesi için sistem saatinin değişmesini beklememizin gerektiğini ispatlıyor.

Peki üretilen birbirinden farklı her sayı gerçekten de birbirinden farklı mı? Aralarında bir benzerlik var mı? Bunu Bölüm 2'de inceleyelim

 


Bölüm 2: Üretilen sayılar birbirlerinden tamamen bağımsız mı?

Şimdiye kadar üretilen sayıların aslında rastgele olmadığını, referans alınarak üretildiğini gördük, inceledik. Şimdi aklımıza başka bir soru geliyor. Sistem saati düzenli aralıklarla arttığına göre ve bilgisayar da genellikle bu saati referans aldığına göre;
Düzenli olarak artan girişler birbirlerinin arasında bağ olmayan çıkışlar üretebilir mi?

Bunu bir örnekle inceleyelim. Bu konuyu sayılarla incelemek oldukça zor. Bu yüzden görsel bir örnekle inceleyelim.

Örnek: Rastgele koordinata rastgele renkte kutu çizdirme

Örneğimizde 1000 pixel genişliğe ve 500 pixel yüksekliğe sahip bir tuvalimiz var. 

Bilgisayarlar Neden Rastgele Düşünemiyor?

Bu boş tuvalimize 1 milisaniye aralıklarla rastgele koordinatlarda ve 10 farklı renkten biri rastgele seçilerek kareler eklenecektir. Şimdi birkaç tane kare ekleyip nasıl göründüğüne bakalım.

Bilgisayarlar Neden Rastgele Düşünemiyor?

8 adet kare tuvalimize çizildi. Şimdilik bu kareler tuvalde rastgele yerde ve rastgele renklerde üretilmiş gibi duruyor. Hadi biraz daha kare ekleyelim.

Bilgisayarlar Neden Rastgele Düşünemiyor?

26 adet karemiz oldu. Hala birbirleriyle bir bağlantıları varmış gibi görünmüyor. Hadi biraz daha kare ekleyelim.

Bilgisayarlar Neden Rastgele Düşünemiyor?

Şimdi 130 kareye sahibiz. Ve biraz tuhaflık var gibi. Sanki tuvalin bazı yerleri çok kalabalık ve bazı yerleri çok boş gibi görünüyor. Biraz daha kare ekleyelim.

Bilgisayarlar Neden Rastgele Düşünemiyor?

Artık 1864 tane karemiz var ve rastgelelikten uzak daha çok örüntüyle oluşturulmuş gibi görünen kareleri görüyoruz. Boşluklarla ve doluluklarla olan farkı görmekte zorlanıyor musunuz? Hadi renklerde bir oynama yapalım.

Bilgisayarlar Neden Rastgele Düşünemiyor?

Şimdi nasıl? Beyaz olarak görünen boşluklara dikkat edecek olursanız aradaki benzerliği hemen farkedersiniz. Aynı durum renkler için de geçerlidir. Aralardaki tekrar ve benzerlik ayırt edilebilir düzeydedir.

 


Sonuç:

Bilgisayarların aslında rastgele sayı üretme yeteneğinden aciz olduğunu birlikte incelemiş olduk. Her ne kadar böyle bir yeteneğe sahip olmasalar da insanoğlu bilgisayara bu yeteneği vermek zorunda. Bunu da farklı kaynakları referans verdirerek yapmayı deniyor. Örneğin sadece sistem saatinin verisini referans olarak vermek yerine hem sistem saatini hem ekrandaki pixellerin rengini vererek daha çok rastgeleye yakın sonuçlar üretmeyi deniyor. Farklı kaynakları aynı anda referans vermek çok daha iyi sonuçlar doğursa da insan gibi öngörülmesi imkansız bir etkeni referans almadıktan sonra ürettiği veriler gerçekten rastgele olmuş olmuyor.

İnsanoğlunu uzaya çıkarmış bilgisayarların aklından 10'a kadar bir sayı bile tutamıyor oluşu ne acayip değil mi? :)
Belki de bilgisayarlar referans almadan aklından bir sayı tutabildiğinde bilinçli yapay zeka teknolojisine ulaşacağızdır ve bu teknoloji insanlığın sonu olacaktır.

Haftalığın PeP'te!

İlk 15'a giren her içerik ile 200 TL kazan!

En popüler yazar sen ol!

Okunma puanını artır, kazan!

Liderlik Tablosu'na göz at!

Bu haftanın en çok okunanları.

E-bültenimize abone ol!

Haftanın en popüler içerikleri, en çok kazananlar ve staj haberleri bültenimizde.

Gizlilik Sözleşmesi'nde belirtilen hüküm ve koşulları kabul ediyorum.