Ben linkin üzerinde /dev/random
kullanarak gerçekten rastgele sayı üretmek için bir program yazmak istiyorum, ancak daha sonra çalışma zamanını bazen oldukça kabul edilemez bulabilirsiniz. C versiyonu sürekli olarak hızlı çalışır.dosya io çok uzun sürüyor
#include <iostream>
#include <fstream>
using namespace std;
int main(int argc,char*argv[])
{
ifstream random("/dev/random", ios_base::in);
int t;
random.read(reinterpret_cast<char*>(&t), sizeof(t));
cout << t << endl;
random.close();
return 0;
}
zaman
Büyük olasılıkla entropi havuzu boşaltılmış olan$: time ./random
-1040810404
real 0m0.004s
user 0m0.000s
sys 0m0.000s
$: time ./random
-1298913761
real 0m4.119s
user 0m0.000s
sys 0m0.000s
"Gerçekten rastgele sayı" Bilgisayar-Bilim dünyasında böyle bir şey yok, kendinizi daha iyi şartlarda açıklayın – user2485710
'/ dev/random', veri için ara verilere ve diğer donanım tipi olaylara bağlıdır. Bu, oldukça rasgele olduğu, ancak bazen beklemeniz gerektiği anlamına gelir (gördüğünüz gibi, bazen birkaç bayt için bile beklemeniz gereken uzun bir süre). C sürümünüz büyük olasılıkla '/ dev/random' yerine'/dev/urandom' kullanıyordur. – Corbin
@Corbin bu gönderi "C++" olarak etiketlendi ... Ben hala şu noktayı alamıyorum ... – user2485710