İçeriğe geç
parazade

Rastgele Sayı Üretici Nedir?

İngilizce: Random Number Generator

Yayın: · Son güncelleme:

Rastgele Sayı Üretici Nedir? Kısaca

Rastgele sayı üretici (RNG), önceden tahmin edilemeyen sayı dizileri üreten algoritma ya da donanımdır. Yazılımda çoğunlukla bir başlangıç değerinden (seed) türetilen sözde rastgele üreticiler kullanılır.

Rastgele Sayı Üretici nedir?
İçindekiler
  1. Rastgele sayı üretici nedir?
  2. Türleri ve farkları
  3. Güvenlikte nelere dikkat etmeli?

Rastgele sayı üretici nedir?

Rastgele sayı üretici, oyunlarda zar atmaktan şifre üretmeye kadar birçok işte gereken tahmin edilemez sayıları sağlar. İngilizce kısaltması RNG'dir (random number generator). Bilgisayar kurallara göre çalışan bir makine olduğu için gerçek rastgelelik üretmek sanıldığı kadar kolay değildir.

Bu yüzden üç tür üretici ayırt edilir. Her biri farklı bir ihtiyaca cevap verir.

Türleri ve farkları

Tür Kaynağı Uygun kullanım
Sözde rastgele (PRNG) Matematiksel formül ve seed Oyun, simülasyon, test
Kriptografik (CSPRNG) İşletim sisteminin güvenli kaynağı Parola, token, anahtar
Donanımsal (TRNG) Fiziksel gürültü Güvenlik donanımları

Sözde rastgele üretici bir başlangıç değeri alır ve formülle sayı dizisi türetir. Aynı seed her zaman aynı diziyi verir. Python'da random.seed(42) yazıp ardından random.randint(1, 6) çağırırsanız, programı her çalıştırdığınızda aynı "zar" sonucunu alırsınız. Bu, testleri tekrarlanabilir yapmak için kullanışlıdır.

Güvenlikte nelere dikkat etmeli?

Sıradan PRNG'ler güvenlik işleri için uygun değildir. Yeterince çıktı gören biri, sonraki sayıları tahmin edebilir. JavaScript'teki Math.random() ve Python'daki random modülü bu gruptadır.

Şifre sıfırlama bağlantısı, oturum token'ı ya da doğrulama kodu üretirken kriptografik üretici kullanın. Python'da secrets modülü, tarayıcıda crypto.getRandomValues(), Node.js'te crypto.randomBytes() bu iş için tasarlanmıştır. Çekiliş gibi sonucu itiraz doğurabilecek işlerde de güvenli üretici seçmek ve yöntemi kayıt altına almak iyi bir uygulamadır.

Sıkça Sorulan Sorular

Bilgisayar gerçekten rastgele sayı üretebilir mi?

Saf yazılım yalnız sözde rastgele sayı üretir. İşletim sistemleri ise donanım zamanlamaları gibi fiziksel kaynaklardan topladığı belirsizliği kullanarak güvenlik işlerine yetecek kalitede rastgelelik sağlar.

Seed değeri neden önemlidir?

Sözde rastgele üreticinin ürettiği dizi tamamen seed'e bağlıdır. Seed bilinirse tüm dizi yeniden üretilebilir, bu yüzden testte faydalı, güvenlikte ise risklidir.

İlgili terimler

UUIDUUID (Universally Unique Identifier), merkezi bir kayıt sistemine ihtiyaç duymadan üretilebilen ve pratikte benzersiz kabul edilen 128 bitlik kimlik numarasıdır. Genellikle tirelerle ayrılmış 36 karakterlik bir metin olarak yazılır.Kriptografi(Cryptography)Kriptografi, bilgiyi yetkisiz kişilere karşı korumak, bütünlüğünü ve kaynağını doğrulamak için matematiksel yöntemler kullanan bilim dalıdır. Kripto paralar adını ve güvenliğini büyük ölçüde kriptografiden alır.Şifreleme(Encryption)Şifreleme, okunabilir veriyi bir algoritma ve anahtar kullanarak yetkisiz kişilerin anlayamayacağı bir biçime dönüştüren ve yalnızca doğru anahtarı bilenin eski hâline getirebildiği veri koruma yöntemidir.PythonPython, okunabilir ve sade sözdizimiyle bilinen, genel amaçlı, açık kaynaklı bir programlama dilidir. Veri bilimi, yapay zekâ, otomasyon ve web geliştirmede en yaygın kullanılan dillerden biridir.GeneratorGenerator, programlamada değerleri bir kerede liste hâlinde değil, her istendiğinde birer birer üreten özel fonksiyondur. Python'da yield anahtar sözcüğüyle yazılır ve büyük veriyi az bellekle işlemeyi sağlar.JavaScriptJavaScript, web sayfalarına buton tıklaması, form doğrulama ve anlık güncelleme gibi etkileşimler kazandıran, tarayıcıların yanı sıra Node.js ile sunucuda da çalışabilen yaygın bir programlama dilidir.Oturum(Session)Oturum (session), bir kullanıcının web sitesine ya da uygulamaya girişinden çıkışına kadar geçen etkileşim süresi ve bu süre boyunca sunucuda tutulan kullanıcıya özel bilgilerdir. Giriş durumu ve sepet gibi veriler oturumda saklanır.Node.jsNode.js, JavaScript kodunu tarayıcı dışında, yani sunucuda ve bilgisayarda çalıştırmayı sağlayan açık kaynaklı bir çalışma ortamıdır. Chrome'un V8 motorunu kullanır ve web sunucuları, API'ler ve komut satırı araçları için yaygındır.