Boost Random Number Generator Library
Boost Library์ ๋๋คํจ์๋ฅผ ์ฌ์ฉํ์ฌ ๋์๋ฅผ ์์ฑํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์์๋ด ์๋ค.
๋ณดํต C์ธ์ด์์ ๋์๋ฅผ ๋ง๋ ๋ค๊ณ ํ๋ฉด, rand()/srand()๋ฅผ ์ฌ์ฉํ์ จ์๊ฒ๋๋ค. ์ข ๋ ๋ง๋ถ์ฌ์ time.h๋ฅผ includeํ์ฌ time๊น์ง ์ผ๋ ์ฌ๋๋ค๋ ์๋ง ๋๋ถ๋ถ์ผ ๊ฒ์ ๋๋ค.
๋จผ์ Boost Documentation์ ์ ํ์๋ ๋๋คํจ์์ ๋ํด ์ ์ด๋ดค์ต๋๋ค.
๋์๋ ๋ค์๊ณผ ๊ฐ์ด ๋ค์ํ๋ฉด์ ๋ค๋ฅธ ๋ฌธ์ ์์ญ ํด๊ฒฐ์ ์ํด ๊ฐ๋ฐ๋์์ต๋๋ค.
1. ๊ณ์ฐ (์๋ฎฌ๋ ์ด์
, ๋ชฌํ
์นผ๋ก๋ฆฌ ์ ๋ถ)
2. ๊ฒ์ (์ ์ ์์ง์)
3. ๋ณด์ (๊ฑด์์ฑ)
4. ํ ์คํธ (๋ฌด์์ํ ํ์ดํธ ๋ฐ์ค ํ ์คํธ)
๋ฌธ์ ์์ญ์ ์๊ตฌ์ ๋ฐ๋ฅธ ๋์ ์์ฑ์์ ๋ค์ํ ๋ณํ.
1. ๋น๊ฒฐ์ ์ ๋์์์ฑ์
2. ์์ฌ๊ฒฐ์ ๋์์์ฑ์
3. ์ค ๋์์์ฑ์
๋๋คํจ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ฐ๋ฐ ๋ชฉํ
1. Third-Party(์ 3์ ํ์ฌ)์์ ๊ฐ๋ฐํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฑ๊ณผ ๋์์์ฑ์์ ์ฌ์ด ๊ฒฐํฉ
2. ์์ฑ์์ ํ๋น์ฑ์ ๊ฒ์ฆํ๋ ์ธํฐํ์ด์ค ์ ์
3. ๋ถ์ฐ์ฒ๋ฆฌ๋ฅผ ๋ชจ๋ฐฉํ๋ ๊ฐ์ดํ Front-end Class ์ ๊ณต
4. ์ต๋ํ์ ํจ์จ์ฑ
5. Front-end ์ฒ๋ฆฌ์ ์์ด์ ์์ํ ํจ๊ณผ๋ฅผ ์กฐ์ํ ์ ์์
Boost์์ ๋์๋ฅผ ์์ฑํ๋ ํจ์๋ ์ฌ๋ฌ๊ฐ์ง๊ฐ ์์ผ๋ฉฐ random.hpp๋ฅผ includeํฉ๋๋ค.
๋์ ์์ฑ๊ธฐ ํผํฌ๋จผ์ค ๋น๊ต
(์ถ์ฒ : http://cafe.naver.com/devrookie)
1. rand48 : 0.096
2. rand48 run-time configurable : 0.697
3. lrand48 glibc 2.1.2 : 0.844
4. minstd_rand : 0.174
5. ecuyer1988 : 0.445
6. kreutzer1986 : 0.249
7. hellekalek1995 (inversive) : 4.895
8. mt11213b : 0.165
9. mt19937 : 0.165
10. mt19937 original : 0.185
11. lagged_fibonachi607 : 0.111
12. lagged_fibonachi4423 : 0.112
13. lagged_fibonachi19937 : 0.113
14. lagged_fibonachi23209 : 0.122
15. lagged_fibonachi44497 : 0.263
๊ทธ๋ผ ์ฝ๋๋ฅผ ํ ๊ฐ ์ง๋ณด๋๋ก ํ์ง์..
#include <iostream>
#include <boost/random.hpp>
using namespace std;
using namespace boost;
int main()
{
rand48 dl;
uniform_int<> kid(1,100);
variate_generator < rand48, uniform_int<> rand(dl, kid);
for(int i=0;i<20;i++)
cout << rand() << ' ';
return 0;
}
์ ์ฝ๋๋ rand48 ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ๋์๋ฅผ ์์ฑํ ๋ฐฉ๋ฒ์ ๋๋ค. 1,100๊น์ง ์๋ฌด ์ซ์๋ ๋ฝ์์ 20๊ฐ์ ์ซ์๋ฅผ ์ถ๋ ฅํ๋ ๋ฐฉ๋ฒ์ ๋๋ค. ๋ ๋์๊ฐ์ time ํจ์๋ฅผ ์ด๋ค๋ฉด ํ๋ก๊ทธ๋จ ์คํํ ๋๋ง๋ค ์ซ์๊ฐ ๋ฐ๋๊ฒ ์ง์? ์ฒ์๋ถํฐ ์ค๋ช ํด๋ณด์๋ฉด, ๋จผ์ ๋์ ๋ฐ์๊ธฐ ํ๋๋ฅผ ์ ํด์ค๋๋ค. rand48์ ์ ํด์คฌ์ง์. ๊ทธ ๋ค์ int๋ฉด int, double์ด๋ฉด double ๋ฑ ์๋ฃํ์ ์ ํด ๋๋ค์ผ๋ก ๋ฝ์์ฌ ์ซ์์ ๋ฒ์๋ฅผ ์ง์ ํด์ค๋๋ค. ์ฌ๊ธฐ์๋ 1์์ 100๊น์ง๋ฅผ ์ง์ ํด์คฌ์ง์. ์ค๊ฐ๊ณผ์ ์ด ๋น ์ ธ์์ง๋ง ๋์ค์ seed๋ผ๋ ๊ฐ์ ๋ฉค๋ฒํจ์๋ก ๋๊ฒจ์ค์ ์ฐ๋ ๋ฐฉ๋ฒ์ด ์๋๋ฐ, ์ฌ๊ธฐ์๋ ๋น ์ง ์ํ์ ๋๋ค. ๋ง๋ค์ด์ค generator์ ๋ฒ์๋ฅผ variate_generator (์ฌ๊ธฐ์๋ using namespace๋ฅผ ์ฌ์ฉ)๋ก ์ ๋ฌํ์ฌ ๋ง์ง๋ง์ผ๋ก ์ถ๋ ฅ์ ํ์์ต๋๋ค.
๊ทธ ์ธ์๋ ์ฌ๋ฌ ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ๋์๋ฅผ ์์ฑํ๋ ๋ฐฉ๋ฒ์ด ์์ผ๋ ์ฐธ๊ณ ํ์ ์ ์ฌ์ฉํด๋ณด์๊ธฐ ๋ฐ๋๋๋ค.
'Programming > C++' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
chkmd5 (ํ์ผ MD5 ํด์๊ฐ ๊ฐ์ ธ์ค๋ ํ๋ก๊ทธ๋จ, only Windows OS) (0) | 2017.01.26 |
---|---|
System Call Function VS Library Call Function (0) | 2016.12.26 |
GCC Stack Smashing Protector (0) | 2016.04.03 |
Boost thread Library (0) | 2013.08.12 |
Boost Library (0) | 2013.04.12 |