Rastgele Sayı Üretme Yöntemleri
Rastgele sayılar bazı matematiksel hesaplamalar, şifreleme algoritmaları, telekomünikasyon, çekiliş sistemlerinde vb. sıklıkla tercih edilirler. Genellikle sözde rastgele sayı üreticiler işimizi görse de bazı sistemlerde gerçek rastgele sayılara ihtiyacımız olmaktadır. Gerçek rastgele sayılar üretmek için evrendeki doğal olaylar kullanılmalıdır.
Sözde Rastgele Sayı Üretici(PRNG)
Bu yöntemde aslında rastgele sayı değil mümkün olduğunca birbirinden bağımsız sayılar elde etmek amaçlanmıştır. Bu yöntem kullanılarak belirli bir tohum(-ing. seed) verilerek bir dizi alakasız sayı üretilebilir. Bu yöntem ile rastgele sayılar üretilemese de şifreleme algoritmalarında sıklıkla tercih edilirler.
Şekil 1.0 - Sözde Rastgele Sayı Üretme Algoritması
LFSR ile Sözde Rastgele Sayı Üretimi
Bu yöntemde bir yazmaç kaydırıcı ve dışlayıcı-özel veya(XOR) kapısı kullanılır. Bu yöntem genellikle mikrokontrolcülerde ve FPGA'larda kullanılır. Yazmaç sıfır değerini aldığı zaman sürekli sıfır değeri döneceğinden dolayı bu yöntemle en fazla 2ⁿ-1 (n-Yazmaç Boyutu) kadar sayı elde edilebilir. Öncelikle yazmaça bir tohum(-ing. seed) değeri verilmelidir. Farklı yazmaç boyutları için farklı polinom filtreleri kullanılmalıdır. Yani bir polinom ile XOR kapısı uygulanacak konumlar belirlenmelidir.
Şekil 1.1 - LFSR ile Sözde Rastgele Sayı Üretme Algoritması
Bu yöntem sözde rasgele sayı üretme yöntemi olduğu için sürekli tekrar eden bir yapısı bulunmaktadır. Uygulanan polinomun tipine göre daha da bağımsız sayılar oluşturulabilir.
Gerçek Rastgele Sayı Üreticiler(TRNG)
Rastgele sayılar teorik olarak matematik kullanarak üretilemezler. Gerçek rastgele sayıları üretmek için evrenin doğal yapısı kullanılmalıdır. Bu doğal yapıya erişmek için çok fazla yöntem bulunsa da gerçek rastgele sayı üretmek için sıklıkla kullanılan yöntemler şunlardır:
- Sıcaklık Gürültüleri
- Elektromanyetik Gürültüler veya Kozmik Arkaplan Işıması
- Radyoaktif Işımalarda Rastgelelik
- Atmosferik Gürültüler
- Yarıiletken Kaynaklı Elektriksel Gürültüler
- Brown Hareketi
- İşlem Gecikmeleri vb.
Bu tarz yöntemler kullanılarak gerçek rastgele sayıların üretilmesi sağlanabilir. Bu yöntemler kullanılarak üretilen rastgele sayıları teorik olarak birbirinden bağımsızlardır.
Mikroişlemcilerde Gerçek Rastgele Sayı Üretme
İdeal işlemciler verilen komutları harfi harfine yerine getiren yapılardır. Eğer elinizde fiziksel bir işlemci varsa bu işlemciler kusursuz yapılar değildir ve işlemlerinde bazı toleranslara sahiptir. Eğer elinizde bir kusursuz bir işlemci yok ve rastgele sayı üretmek istiyorsanız en kullanışlı çözüm işlemci içindeki zamanlayıcı(-ing. timer) yapılarını kullanarak zamandaki sapmaları incelemek olabilir.
Eğer ADC(Analog-Dijital Çevirici) bulunan bir işlemciye sahipseniz referans voltajını sürekli değiştirerek bağlantı kapasitansları ya da diğer elektriksel etkilerden kaynaklı gürültüleri ölçümleyerek bu verileri sözde rastgele sayı üretici algoritmalarından geçirerek gayet iyi çalışan rastgele sayı üreticiler oluşturabilirsiniz.
SRAM ile Gerçek Rastgele Sayı Üretimi
Bu yöntemde SRAM üstünde farklı teknikler kullanılsa da en çok tercih edilen teknik belleğe güç verildiği anda oluşan rasgelelik durumudur. Şekil 2.1'de gördüğünüz yapı 6 transistörden oluşan bir SRAM hücresinin basitleştirilmiş görselidir. Bu hücrelere güç verildiğinde oluşan rasgele kararsızlık durumu kullanılarak doğru rastgele sayılar oluşturulabilir. Bu kararsızlık durumu sürekli olmadığı için bellek hücresi sürekli güç verilip kesilerek stres altına sokulmalıdır. Bunun gibi tasarım zorlukları nedeniyle diğer yöntemlere göre daha az tercih edilirler.
Şekil 2.1 - Basitleştirilmiş Statik Rastgele Erişim Belleğinin Yapısı
İnsanlar Gerçekten Rastgele Sayı Üretebilirler mi?
Bir insandan rastgele sayı söylemesini isterseniz muhtemelen çok rahat bir şekilde rastgele sayı üretebilecektir. Bu üretilen sayı eğer geniş aralıklarda sorulursa muhtemelen bunun gerçek rastgele sayı olmadığını anlayamayacaksınız ancak eğer küçük aralıkda bir rastgele sayı isterseniz bunun tam olarak rastgele olmadığını anlayabilirsiniz.
Örneğin bir insandan 1'den 10'a kadar rastgele bir sayı söylemesini isterseniz muhtemelen 7 cevabını alacaksınız. Bunun nedeni insanlara 7 sayısının daha rastgele bir sayı gibi gelmesidir.
İnsanların Rastgele Sayı Tercihleri - 1'den 10'a kadar
Bu nedenle insanların rastgele sayı seçme konusunda bağımsız olduklarını söylemek pek mümkün değildir. İnsanların rastgele sayı üretmesi hakkında araştırmalar sürmesine rağmen hala tam olarak çözülememiştir.