Ich möchte ein Programm schreiben, um wirklich Zufallszahl mit /dev/random
auf Linux zu generieren, aber später finde ich die Laufzeit ist es durchaus akzeptabel inakzeptabel. C-Version davon läuft schnell konsistent.Datei io mit/dev/Random dauert zu lang
#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;
}
Die Zeitstatistik von
Laufzeit$: time ./random
-1040810404
real 0m0.004s
user 0m0.000s
sys 0m0.000s
$: time ./random
-1298913761
real 0m4.119s
user 0m0.000s
sys 0m0.000s
„wirklich Zufallszahl“ nicht so etwas in der gesamten Informatik-Welt, erklären sich in besseren Konditionen – user2485710
'/ dev/random' für Daten auf interupts und andere Hardware-Typ Ereignissen abhängt. Dies bedeutet, dass es ziemlich zufällig ist, aber auch, dass Sie manchmal warten müssen (wie Sie gesehen haben, ist es manchmal eine lange Zeit, die Sie sogar für ein paar Bytes warten müssen). Ihre C-Version benutzt wahrscheinlich '/ dev/urandom' statt'/dev/random'. – Corbin
@Corbin Dieser Beitrag ist mit "C++" getaggt ... Ich verstehe immer noch nicht den Punkt ... – user2485710