Pseudorandom number generators (PRNG) çok karmaşık bir canavar vardır.
Hiçbir gerçek "mükemmel" rasgele sayı jeneratörler var - aslında matematiksel fonksiyonlardan yapılabilir ki en yalancı rasgele vardır - onlar en çok niyet ve amaçlar için yeterince rastgele görünüyor.
Aslında, bir PRNG tarafından döndürülen bir dizi herhangi bir ek eylemler gerçekleştirerek gerçekten rastgeleliğine artmaz, ve aslında, sayı daha az rastgele olabilir.
Yani, benim en iyi tavsiyem, değerler etrafında karışıklık bir PRNG döndü yok. Amaçlanan kullanım için yeterince iyi bir PRNG kullanın, ve eğer değilse gerekirse, o zaman daha iyi sonuçlar üretebilen bir PRNG bulabilirsiniz.
Ve açıkçası, onu olduğu gibi oldukça iyi bir PRNG, bu yüzden muhtemelen en rahat kullanım için yeterince iyi olacak ki, mt_rand
function uses the Mersenne twister görünür.
Edit
Rastgele bir dizi işlemleri gerçekleştirirken daha az rastgele yapabilirsiniz neden yorumlarda bir soru vardı. Örneğin, bazı PRNGs bit farklı bölgelerinde daha tutarlı, daha az rastgele sayılar dönebilirsiniz - high-end düşük sonunda daha rastgele olabilir.
Bu nedenle, yüksek düzey atılır, ve alt uç döndürülür işlemlerinde bu değer, PRNG döndürülen ilk değerden daha düşük rasgele olabilir.
Ben şu anda iyi bir açıklama bulamıyorum, ama ben merkezli olduğu için Java belgelerine Random.nextInt(int)
method, which is designed to create a fairly random value in a specified range. That method takes into account the difference in randomness of the parts of the value, so it can return a better random number compared to more naive implementations such as rand() % range
.