Rastgele Sayı Nasıl Üretilir? Gerçekten Rastgele Bir Sayı Üretebilir Miyiz?

Programlama dilleri ile fazlasıyla içli dışlı olduğum bu dönem aklıma garip bir soru takıldı. C Sharp, Python, Java, Javascript gibi programlama dillerinde rastgele sayı üretme yollarını farklı değerler elde etmek için çok sık kullanıyoruz. Günlük kullanıcılar da video oyunlarından, kumara kadar her şeyde rastgele üretilen bu değerler ile farkında olmasa da karşılaşıyor. Peki ya bilgisayar sistemlerinde işlemciden random number generator ile rastgele bir sayı istediğimizde arka planda çalışan random sayı üretme algoritması nedir? Rastgele sayı nasıl üretilir?

Random Komutu Gerçekten Rastgele Sayılar Mı Üretiyor?

Dışardan bakıldığında bu soruya vereceğimiz cevap evet olur. İşin temeline indiğimizde ise işlerin pek de öyle olmadığını görüyoruz. Bu noktada elde ettiğimiz veriler sözde random sayılar ve gerçekten random sayılar olarak ikiye ayrılıyor. En basit random veri zaman fonksiyonu ile çalışıyor. Yani o sırada zamana bağlı veriler işleniyor ve karşımıza rastgele gibi görünen bir sayı çıkıyor.

Rastgele sayıların nasıl üretildiği çeşitli bilgisayar programlarını anlamamız için çok önemlidir. Kaliteli bir şekilde rastgele değer sağlamak için kullanılacak girdilerin de bir o kadar rastgele olması gerekmektedir. Yani böyle durumlarda kullandığımız veriler ne kadar kaliteli olursa, amaçladığımız iş için de o kadar kaliteli kazanımlar elde ederiz. Bununla birlikte geçmişte kullanılan algoritmalar, yeni rastgele değer üretme teknolojilerine kıyasla yeteri kadar gelişmemiştir. Android işletim sistemi bile sözde rastgele sayılar üretmek için Linux altyapısı kullanmaya mecbur kalmıştır. Bu yazımızda yeni nesil sensör donanımlı mobil cihazlar ve Nesnelerin İnterneti Cihazlarında(IOT) kullanılan yenilikçi rastgele sayı üretme yöntemlerini ele alacağız.

Öncelikli olarak iki şeye göz atmamız gerekiyor. Modern cihazlar ne kadar rastgele veri kullanıyor ve sahip oldukları sensörler ne kadar rastgele sayı üretiyor? Günümüzde en sık kullandığımız mobil cihazlar bile oyunlar, şans faktörünün kullanıldığı çeşitli uygulamalar ve web tarayıcılarında sıkça rastgele verilere ihtiyaç duyuyor. Bu veriler sadece sıradan işlemleri yerine getirmekle kalmıyor. Aynı zamanda mobil ödeme, bankacılık gibi rastgele iki faktörlü kimlik doğrulama işlemlerinin gerçekleştirildiği alanlarda yardımımıza koşuyor. Bu gereksinimler her geçen gün büyüdüğü için Intel gibi teknoloji devleri donanım tabanlı rastgele veri üretme sistemleri geliştirmeye çalışıyor.

Bu bakımdan rastgele veri yani rastgele sayı üretmenin temelde iki farklı türü bulunmaktadır. Bunların ilki en sık kullanılan sözde rastgele sayılardır. Günlük kullanım sırasında, örneğin bir programlama dilinde rastgele değere ihtiyaç duyduğumuzda sistemden bizim için sözde rastgele bir veri üretmesini isteriz. Sistem de bize aslında rastgele olmayan, o isteğin gerçekleştiği anı milisaniyeler düzeyinde ölçen ve rastgele sayı üreten bir yol izler. Saniyenin binde biri dolaylarında üretilen ve kısıtlı tepki sürelerimiz dolayısıyla bizim için her zaman rastgele olan bu sayılar eğer çok özel bir alanda çalışmıyorsak günlük kullanımda yeterince faydalı olacaktır.

Gerçek Bir Rastgele Sayı Nasıl Üretilir?

Sıradan kullanıcı için gerçek bir rastgele sayı nasıl üretilir sorusu çok önemli olmasa da güvenlik, bankacılık işlemleri ve savunma sanayii gibi alanlarda bu verilerin önemi son derece artıyor. Donanım tabanlı rastgele veri üretme teknikleri ise genellikle en basitinden ivme ölçer veya kamera gibi dışarıdan veri alabileceği yolları kullanıyor.

Daha karmaşık sistemlerde ise rastgele veri üretmek isteyen bilgisayarlar, örneğin bir atomun radyoaktif bozunmasını ölçme yoluna gidebiliyor. Kuantum teorisine göre bir atomun ne zaman bozunacağını bilmenin bir yolu bulunmamaktadır. Kısaca bu durum tamamen rastgeledir. Bu sayede rastgele veri üretmek isteyen bir sistem bu tür bir durumu gözlemleyerek bize gerçekten rastgele bir sayı üretebilir. Bunun yanında Linux gibi sistemlerde yer alan bazı rastgele sayı üretme yöntemleri kullanıcıdan gerçekten rastgele sayılar üretmek için yeteri kadar düzensiz veri alana kadar bilgi topluyor ve bunun sonucunda gerçek rastgele sayılar üretmeyi başarıyor.

Rastgele Sayı Üretmek ve Pseudorandom Numaraları

Gerçek rastgele sayılara alternatif olarak kullanabileceğimiz bir yöntem de Pseudorandom numaralarıdır. Bu numaralar sistemin çekirdeğinden büyük ölçüde rastgele oluşan verileri ve çeşitli algoritmaları kullanarak yeterince rastgele veriler üretebilir. Bu sayılar bir bilgisayara bağlanmış veri toplama aracını kullanarak belli sayaçlar aracılığı ile de daha yüksek kalitede rastgele sayılar üretmeyi başarabilir. Tabi eğer bir saldırgan Pseudorandom numaralarının kullandığı algoritmaları biliyorsa, yüksek güvenlik gerektiren işlemlerde çeşitli güvenlik riskleri oluşabilir. Yine de daha yüksek kaliteli rastgele verilere ihtiyaç duyduğumuz ama güvenlik kısmını o kadar da önemsemediğimiz çeşitli grafik işlemlerinde ve bilgisayar oyunlarında bu yönteme rahatlıkla başvurabiliriz.

Bahsettiğimiz konuları toparlamamız gerekirse, günlük kullanımda aslında rastgele sayı denilen bir şey yoktur. Her bilgisayar yada işletim sistemi belirli algoritmaları kullanarak rastgele gibi görünen veriler üretir ve kullanır. Bunun asıl sebebi bu cihazların insanlar tarafından programlanması ve belirli komutları yerine getirmesidir. Yine de eğer gerçek rastgele sayılar üretmek istiyorsak dışardan sonucu belli olmayan veriler alan ve bunları değerlendiren ek cihazlardan faydalanabiliriz. Hatta iyi bir çocuk olursak, tamamen rastgele verilerle dünyayı daha güvenli bir yer haline getirebiliriz…

 

 

 

 

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir