Chcę napisać program do generowania naprawdę losowej liczby przy użyciu /dev/random
na Linuksie, ale później uważam, że czas jego działania jest czasami nie do przyjęcia. Wersja C działa szybko.plik io z/dev/random trwa zbyt długo
#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;
}
Statystykę czas czas
$: time ./random
-1040810404
real 0m0.004s
user 0m0.000s
sys 0m0.000s
$: time ./random
-1298913761
real 0m4.119s
user 0m0.000s
sys 0m0.000s
"naprawdę losowa liczba" nie ma czegoś takiego w całym świecie informatyki, wyjaśnij się lepiej. – user2485710
'/ dev/random' zależy od interakcji i innych zdarzeń typu sprzętowego dla danych. Oznacza to, że jest dość losowy, ale także, że czasami trzeba czekać (jak już widzieliście, czasami długo trzeba czekać nawet na kilka bajtów). Twoja wersja C prawdopodobnie używa '/ dev/urandom' zamiast'/dev/random'. – Corbin
@Corbin tego posta jest oznaczony jako "C++" ... Nadal nie rozumiem ... – user2485710