Merhaba arkadaşlar baya araştırdım bilgisayar random sayıyı genel anlamda işlemci saati ve işlemcinin anlık işlem sayısından aldığını öğrendim.bunu matematiksel olarak nasıl yapıyor bilgisi olan varmı ? Formül veya her hangi bir dilde algoritmasını bilen varmı ? Fortran dilnide buldum ancak C# da temel bilgiye sahip oldugumdan fazla anlayamadım.Örnek vereyim bilgisayarın random sayı olarak x i vermesi için işlemcinin o anki işlem sayısı ve cpu saati gibi bir förmüle dökecek olursak nasıl bir matematik işlemi izleriz ? bu konuda bulduğum fortran dilinde yazılmış hali şu linkte göz atıp değerlendirirseniz sevinirim.

http://stackoverflow.com/questions/8920411/possible-sources-for-random-number-seeds

soruldu: 11 Oca '15, 08:40

artis200's gravatar image

artis200
26112
cevap kabul oranı: 0%

değiştirildi: 11 Oca '15, 08:43


Bilgisayar dünyasında rastgele diye birşey yoktur. O bir yanılgıdır. Nasıl? Pseudo code olarak yazarsak işlemler şu şekilde:

  1. CPU saatini al
  2. Üretilecek rastgele sayı aralığını belirle. (Örneğin 4-10 arası)
  3. Bu sayısal değer üzerinde bazı matematiksel işlemler yap. Bu işlemler ne kadar karışıksa üretilen sayının rastgelelik ihtimali ve tahmin edilmesi zorlaşır ama işlemciye fazla yük biner. Hiçbir matematiksel işlem yapmasan bile olur ama rastgele değerlerin kullanıldığı en önemli yerler kriptografi olduğu için biraz matematiksel işlem yapılsa iyi olur. Rastgele değerlerin tahmin edilememesi için. Ama üst düzey güvenlik gerekmeyen yerler için bu işlemi atlayabilirsin.
  4. Matematiksel işlemler sonucunda aldığın sayısal değeri 10 - 4 = 6 ya modla.
  5. Modladığın bu değeri aralıktaki küçük sayıyla topla ( 4 + [bulunan değer]) ve sonucu döndür.

Bu algoritmayı örneğin random( ilksayi, ikincisayi ) şeklindeki bir metod yada fonksiyon olarak tanımlayıp kodlarsan sonuç olarak ilksayi ile ikincisayi arasında rastgele bir değer elde edersin. Buradaki rastgele kelimesi gerçekte rastgele değildir. Örneğin ben şuan bu metodu çağırdığımı varsayalım. CPU saati 1000000 değerini göstersin ve 4,10 değerleri için bu aralıkta bir değer üretir. 1000001 değeri için yine aynı işlemleri tekrar eder ama tabiki CPU saati saniyenin her milyarda hatta trilyonda bir zaman biriminde değiştiği için sonuç farklı olur.

Kısacası bilgisayar biliminde rastgelelik saniyenin çoooook kısa zaman birimlerinde değişen değerlerin saniyenin biraz daha uzun zaman birimindeki işler için kullanılması şeklindeki bir ilüzyondur. Umarım anlatabilmişimdir.

permanent link

cevaplandı: 16 Oca '15, 08:51

kodmanyagha's gravatar image

kodmanyagha
3.1k132852
cevap kabul oranı: 15%

değiştirildi: 16 Oca '15, 08:54

Cevabınız
toggle preview

Bu soruyu takip et

E-Posta üzerinden:

Üyelik girişi yaptıktan sonra abonelik işlemlerini yapabilirsiniz

RSS üzerinden:

Cevaplar

Cevaplar ve Yorumlar

Yazı Formatlama

  • *italic* ya da _italic_
  • **bold** ya da __bold__
  • link:[text](http://url.com/ "başlık")
  • resim?![alt text](/path/img.jpg "başlık")
  • liste: 1. Foo 2. Bar
  • temel HTML etiketleri de kullanılabilir

Bu sorunun etiketleri:

×238
×4
×2
×1

Soruldu: 11 Oca '15, 08:40

Görüntüleme: 595 kez

Son güncelleme: 16 Oca '15, 08:54

powered by BitNami OSQA