리눅스에서 /dev/random
을 사용하여 실제로 임의의 숫자를 생성하는 프로그램을 작성하려고하지만, 나중에 그 실행 시간이 때때로 용납 될 수 없다는 것을 알게됩니다. 그것의 C 버전은 지속적으로 빠르게 실행됩니다./dev/random을 사용하는 파일 io가 너무 오래 걸린다
#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;
}
시간
당신은 가능성이 엔트로피 풀을 배출 한$: time ./random
-1040810404
real 0m0.004s
user 0m0.000s
sys 0m0.000s
$: time ./random
-1298913761
real 0m4.119s
user 0m0.000s
sys 0m0.000s
"정말 임의의 숫자는"전체 컴퓨터 과학 세계 같은 건, – user2485710
'는/dev/random'가 interrupts를 데이터에 대한 다른 하드웨어 타입의 이벤트에 따라 더 나은 용어로 자신을 설명합니다. 이것은 꽤 무작위 적이지만, 때때로 기다려야한다는 것을 의미합니다 (본 것처럼, 때로는 몇 바이트도 기다려야하는 긴 시간입니다). C 버전은'/ dev/random'보다는'/ dev/urandom'을 사용하고 있습니다. – Corbin
@Corbin이 게시물에 "C++"라는 태그가 붙어 있습니다 ... 아직 점수를 얻지 못했습니다 ... – user2485710