Tôi muốn viết một chương trình để tạo số ngẫu nhiên bằng cách sử dụng /dev/random
trên linux, nhưng sau này tôi thấy thời gian chạy của nó đôi khi không thể chấp nhận được. Phiên bản C của nó chạy nhanh nhất quán.tập tin io với/dev/random mất quá lâu
#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;
}
Thời gian thống kê của thời gian chạy
$: time ./random
-1040810404
real 0m0.004s
user 0m0.000s
sys 0m0.000s
$: time ./random
-1298913761
real 0m4.119s
user 0m0.000s
sys 0m0.000s
"số ngẫu nhiên" không có gì trong toàn bộ Computer-Science-world, giải thích cho mình trong điều khoản tốt hơn – user2485710
'/ dev/random' phụ thuộc vào sự kiện và các sự kiện kiểu phần cứng khác cho dữ liệu. Điều này có nghĩa rằng nó khá ngẫu nhiên, nhưng cũng đôi khi bạn phải chờ đợi (như bạn đã thấy, đôi khi nó là một thời gian dài, bạn phải chờ đợi ngay cả đối với một vài byte). Phiên bản C của bạn có thể sử dụng '/ dev/urandom' thay vì'/dev/random'. – Corbin
@Corbin bài đăng này được gắn thẻ là "C++" ... Tôi vẫn không nhận được điểm ... – user2485710