Dave'in cevabı oldukça güzel bir şekilde devam ediyor, ancak ikinci seçenekte biraz daha netleştirmek için:
gerçek bir donanım rastgele sayı üreteci fiziksel bir entropi kaynağı kullanır. Böyle bir entropi kaynağı kozmik radyasyon, elektriksel gürültü, ters yönlü bir diyottan (veya BJT transistöründen) avanlanche etkisi, chua devresi vb. Olabilir. Entropi kaynağı ne kadar az belirleyiciyse, rastgele çıkışın kalitesi o kadar iyi olur. İdeal bir entropi kaynağı kuantum fiziği etkisi veya deterministik denklemlerle modellenemeyen bir şey kullanmak olacaktır.
Rasgele sayı üreteçleri ile bir başka önemli faktör entropi kaynağının birim zaman başına sadece sınırlı miktarda entropi üretebilmesidir. İyi bir örnek chua devresidir: oldukça rastgele olmasına rağmen, çok düşük bir hıza sahiptir ve gerçek hayatta uygulama için kullanılamaz.
Yerleşik RNG'lere sahip birçok işlemci / mikrodenetleyicide, kasıtlı olarak yanlış senkronize edilen 2 ila 4 saat arasındaki saat kayması kullanılır. Daha sonra, deseni daha da rastgele hale getirmek ve bir kayıtta sonucu değiştirmek için hem analog hem de dijital filtreleri kullanırlar. Bu tür bir filtrelemenin gerçekleştirilmesi birkaç döngü gerektirir; bu, yeni bir değer kullanılabilir olmadan önce belirli bir saatte gereken minimum döngü miktarını açıklar.
Saatin sürüklenmesi tam bir kuantum etkisi değildir, bu yüzden modellenebilir, ancak sıcaklık, silikon işlemi, çalışma sıklığı, elektrik gürültüsü, arka plan radyasyonları vb.Gibi birçok parametreye bağlı olduğu için yeterince rasgele. .
Donanım RNG'sinin yeterli geçişe sahip olmadığı uygulamalarda (oldukça zorlu şifreleme uygulamalarında olduğu gibi), donanım RNG'sini sdtlib'deki rand () işlevi gibi sahte bir rasgele sayı üreteci için bir tohum olarak kullanmak oldukça yaygındır. Bununla birlikte, bu tür bir uygulama genellikle, gerçek rastgele değerlerle çok sık atılabilen bir tohumdan çalıştırılmak üzere özel olarak tasarlanmış rand () yönteminin daha iyi uygulanmasını sağlar . Entegre donanım RNG'lerine sahip daha yeni Intel işlemcide, sözde rasgele algoritma parçası doğrudan silikona entegre edilmiştir, bu nedenle donanım tarafından gerçekleştirilir ve çok yüksek rasgele geçiş sağlar.
Rand () yönteminin kendisini düşünürseniz, bu sadece yeterince büyük miktarda entropi üretmek için tasarlanmış bir methematik ifadedir. Uygulamaya bağlı olarak yeterince büyük: kriptografik anahtar nesiller için, rasgeleliğin en sevdiğiniz müzik çalarınızda basit bir rasgele karışıklık için gereken rasgele olandan daha yüksek kalitede olması gerekir. Rasgele çıktının kalitesi ne kadar yüksek olursa, rasgele sayının hesaplama maliyeti de o kadar yüksek olur.
Rastgele bir sayıyla ilgili işlemler, bir dosyanın MD5 karmasını hesaplamakla ilişkili işlemlere oldukça benzer: bir tür bit çığ efekti kullanmaya çalışırlar, böylece bir tohum değerindeki tek bir bit değişikliği tüm oluşturma modelini değiştirir. Bir yan not olarak, sahte rasgele sayı üreteci olarak MD5 kullanarak tavsiye ETMEM; sadece bir örnekti. Hem verimsiz hem de çok rasgele değil, ama nokta var: Aynı dosyayı bir MD5 has algoritmasına beslerseniz, her zaman aynı deterministik çıktıyı alırsınız, aynı çıktıyı her zaman aynı şekilde alırsınız uygulamanız şu anki zaman gibi rastgele öğelere bağlı olmadığı sürece aynı çekirdeği girerseniz rand () işlevi.