Bilmek istediğin her şeye ulaş

Bir makinenin rastgele bir şey seçmesinin altında yatan mantık nedir?

Yazılım dillerinin rastgele rakamlar seçmesi nasıl sağlanıyor? Bir makinenin rastgele bir şeyi nasıl seçebileceğine henüz aklım ermiyor.Düzenle
Determinist bir makine algoritması ne olursa olsun gerçekten rastgele bir sayı üretemez ve Turing makinesi kuralına uyan tüm bilgisayarlar deterministir (Teorik olarak kuantum bilgisayarları istisna) . Bu yüzden, rastgele sayı üretiminde iki yöntem kullanılır.

1. Sözde-Rastgele (Psuedo-Random) sayı üretimi: Gerçekte rastgele olamayan ama rastgele sayı dizileri ile aynı istatistiksel özellikleri gösteren bir sayı dizisi yaratıp onu kullanmak. Bilgisayarınızda, kullandığınız tüm random fonksiyonları bu yöntemi kullanıyor. Rastgele sayıların matematiksel açıdan oldukça fazla istatistiksel özelliği vardır ve algoritma ihtiyaca göre olabildiğince fazlasını taklit etmek zorundadır. Örneğin rastgele 32-bit bir sayının 16. Bitini bilen bir kişi 17. Biti tahmin edemez. Aynı özellik algoritma tarafından taklit edilebilir. Kripto sistemlerinde, tek bir özellik sapması bulursanız genelde sisteme buradan saldırırsınız.

2. Gerçek Rastgele sayı üretimi: Fiziksel dünyada rastgele olduğunu bildiğiniz bir ölçüm yaparsınız. Örneğin aşırı hassas bir voltmetre ile gerilime bağlı olmayan bir direncin üzerindeki gerilimi ölçersiniz. Elektronlardaki Brown etkisi (atomların kinetik enerjileri ile elektronlarla birlikte çalkalanmaları) ile çok küçük bir gerilim beyaz-gürültü (eski televizyonların karıncalanmaları) şeklinde oluşur. Bu değeri bir algoritma ile kullanırsanız gerçek bir rastgele sayı üretmiş olursunuz. Bu tekniğin dezavantajı bilgisayarda fazladan bir sistem kullanmak (bu örnekte hassas bir voltmetre, termometre de olabilirdi) . Bilgisayarınızda ek bir donanım olmadığı için bunu bilgisayarınıza yaptıramazsınız ama böyle sayılar sağlayan bir internet sitesi var. random.org/

Not: Bilgisayarınızda bu iki sistemi kısmen karıştırabilirsiniz. Örneğin tavla oyunundaki zarlarda Oyuncu zarı durdurmak için fareye bastığı anın microsaniye değerini kullanabilirsiniz. Bunu direk kullanırsanız gerçek-rastgele sayı üretmiş olursunuz (fareye ne zaman basacağımızda microsaniye seviyesinde bilgisayar için rastgeledir) ama böyle oluşturulmuş bir sayı genellikle daha uzun rastgele sayı üretimi için yetmez (En sağ bit en rastgele sayı iken sola doğru rastgelelik düşer). Bu durumda böyle bir görece rastgele sayıyı sözde-rastgele sayı üretecinizde girdi olarak kullanabilirsiniz.
  • Paylaş
1
Bir makinenin rastgele sayı üretebilmesi için REFERANS alacağı noktalar vardır. Referans olmadan makine rastgele sayı üretemez. Misal olarak;
-Java ve C de kullanılan random sayı ataması makinenin(PC)' in o anki 'Saat' değerini alıp algoritmalar ile sayıyı üreterek değişkene ataması şeklinde olur.
  • Paylaş
Bilgisayar aslında kendi başına rastgele sayı üretemez. Random sayı üretme mantığı arkadaşlarında bahsettiği gibi o andaki saat değerini işlemesiyle olur. Anlık saat değerini fonksiyondan geçirip yeni bir değer çıkartmak gibi düşünülebilir. Bu fonksiyon elinde olursa, bilgisayarın hangi sayıyı üreteceğini sende bilebilirsin. Hangi sayıyı üreteceğini bilirsek, rastgele bi sayı üretememiş demektir. Rastgele sayı üretemez demem burdan geliyor.
Rastgele sayıyı nasıl üretir peki?
  • Bunun için bilgisayara bağlı olmayan şeyler kullanılması gerekir. Mesela o anda kullanıcının klavyede yazdıklarına göre rastgele sayı üretebilir. Burada sayıya rastgeleliğini veren kullanıcının klavyeden yazdıklarıdır. Ne yazacağını bilmediğimiz için bastığı tuşlara göre ratgele sayı üretilebilir.
  • Önceki örnek için şu akla gelebilir, kullanıcı kavyeden hangi harfi gireceğini biliyor. Gireceği harfleri bildiğine göre fonksiyonu da biliyorsa, o zaman hangi sayı olacağını yine biliriz. Yani rastgele olmaz. Bu durumda şu şekilde bir rastgele sayı üretme olayına girilebilir. Klavyede okunan değerler arasındaki mili saniye zaman farkı alınarak rastgele olması sağlanabilir.
  • Yine rastgele artıp azalan voltaj değeri ile rastgele sayı üretilebilir.
  • Ortama bağlı sıcaklık değeriyle üretilebilir.
Kısaca bilgisayara değil de, cevreye be insana bağlı durumda rastgele sayı üretilme olayı tam manasıyla gerçekleşmiş olur
  • Paylaş
Algoritma
  • Paylaş
Rastgele sayı üreteçleri vardır ve bu üreteçler bir matematiksel fonksiyona dayanarak sayı üretimini sağlarlar.
Üretme teknikleri: Lineer Eşleşiklsel Yöntem - Linear Congruential Method
(LCM),Birleştirilmiş Lineer Eşleşiklsel Üreteçler - Combined
Linear Congruential Generators (CLCG) v. B

Duyduğum kadarıyla en basit tabirle bilgisayarın dijital saatine göre işte o değerin modunu falan alıp matematiksel hesaplamalar yapılarak rastgele seçilmiş hissi veriliyor.
  • Paylaş
1

Ceyhun Çakar, Dijital saatin modunu birinci rastgele sayı için kullanabilirsin. Ama kullanıcı etkileşimi olmadan ikinci bir sayı ürettiğinde, iki üretim arasında her seferinde eşit bir zaman geçeceği için ikinci sayı birinci sayıdan tahmin edilebilir (tabi bu işin ustası tarafından). Bu yüzden kripto sistemlerinin ratgele sayı ihtiyacında bunu kullanmıyorlar. Tabii tavla zarı için kullanılabilir.

Programlar aslinda rastgele bir sayi secmezler. Yazilan koda gore bir sayi verir. Mesela genelde timestamp alinir md5 gibi kriptolama ile kriptolanir milisaniye icinde bir sayida durdurulur ve o sayi verilir tabi sayi artik siz ne istiyorsaniz ondalik istiyorsaniz ondalik olarak kesilerek verilir veya yuzdelik kestiyseniz yuzdelik bir sayi.
  • Paylaş