Şimdiden birçok doğru gözlem yaptınız!
Her iki rastgele üreteci de tohumlamak istemiyorsanız, uzun vadede bir üreteci veya diğerini seçmek muhtemelen daha kolaydır. Ama ikisini de kullanmanız gerekiyorsa, o zaman evet, ikisini de tohumlamanız gerekir, çünkü birbirlerinden bağımsız olarak rastgele sayılar üretirler.
Çünkü numpy.random.seed()
temel zorluk, iş parçacığı güvenli olmamasıdır - yani, çok sayıda farklı yürütme evrelerine sahipseniz kullanmak güvenli değildir , çünkü işlevi aynı anda iki farklı iş parçacığı çalıştırıyorsa çalışacağı garanti edilmez. İş parçacığı kullanmıyorsanız ve programınızı gelecekte bu şekilde yeniden yazmanız gerekmeyeceğini makul bir şekilde tahmin edebiliyorsanız, numpy.random.seed()
sorun değil. Gelecekte iş parçacıklarına ihtiyacınız olabileceğinden şüphelenmek için herhangi bir neden varsa, önerilenleri yapmak ve numpy.random.Random
sınıfın yerel bir örneğini yapmak uzun vadede çok daha güvenlidir . Anladığım kadarıyla random.random.seed()
, iş parçacığı için güvenli (veya en azından, aksine herhangi bir kanıt bulamadım).
numpy.random
Kütüphane yaygın bilimsel araştırmalarda kullanılan birkaç ekstra olasılık dağılımlarını yanı sıra rastgele veri dizileri üretmek için kolaylık fonksiyonları bir çift içerir. random.random
Kütüphane biraz daha hafif olduğunu ve bilimsel araştırma veya istatistik çalışmalarının diğer tür işin yoksa ince olmalıdır.
Aksi takdirde, her ikisi de rastgele sayılarını oluşturmak için Mersenne twister dizisini kullanırlar ve her ikisi de tamamen deterministiktir - yani, birkaç önemli bilgi biti biliyorsanız, bundan sonra hangi sayının geleceğini kesin olarak tahmin etmek mümkündür . Bu nedenle, ne numpy.random ne de random.random herhangi bir ciddi kriptografik kullanım için uygun değildir . Ancak sıra çok uzun olduğu için, verilerinizi tersine çevirmeye çalışan insanlar için endişelenmediğiniz durumlarda her ikisi de rastgele sayılar oluşturmak için uygundur. Rastgele değeri tohumlama gerekliliğinin nedeni de budur - her seferinde aynı yerden başlarsanız, her zaman aynı rastgele sayı dizisini elde edersiniz!
Eğer bir yan not olarak, do kriptografik düzey rastgeleliğine gerek, kullanmak gerekir sırları gibi modülü, ya da bir şey Crypto.Random bir Python sürümünü önceden Python 3.6 den kullanıyorsanız.
random.random
. Yine de genellikle buna ihtiyacınız olmaz.