프로그래밍 언어/C++ 2

[C++] 시간 측정 방법

C언어에서 시간을 측정할 때 time.h헤더를 사용하거나 windows.h헤더를 사용하여 시간을 측정한 기억이 있다. time은 직관적이었지만 정밀한 측정이 힘들었고, windows.h의 QueryPerformanceCounter 함수를 이용한 측정은 꽤 정밀하지만 비직관적이었다. (리눅스에서는 사용도 못한다.) C++는 보다 정밀한 측정을 기본적으로 제공한다. #include 시간의 신 크로노스(Chronos)에서 따왔다고 한다. 핵심 기능인 시간을 측정하는 코드는 다음과 같다. std::chrono::system_clock::time_point start = std::chrono::system_clock::now(); // do Something; std::chrono::duration duratio..

[C++] 난수 생성 방법

C를 먼저 공부하고 C++를 공부하는 사람이라면 난수를 생성할 때 stdlib.h(cstdlib)에 있는 rand 함수를 사용했을 것이다. rand함수를 사용하면 난수가 생성되는것 처럼 보이지만 실제로 여러번 실행해보면 같은 결과가 나온다. rand함수를 대략적으로 구성하면 다음과 같을 것이다. int myRand() { static int seed = 94263523; seed = (seed + 998244353) % (1000000007); return seed; } 여기에서 시드넘버가 일정하기 때문에 언제나 같은 수가 나올 것이고 실행해보면 난수가 생성된것 처럼 보인다. 이를 해결하기 위해 시드넘버를 현재시간 기준으로 설정하곤 한다. #include int myRand() { static int s..