๐ฒ ๋์ ์์ฑ: ์ ํ ํฉ๋ ์์ฑ๊ธฐ ๊ตฌํ ๐ฒ

์๋ , ์น๊ตฌ๋ค! ์ค๋์ ์ ๋ง ์ฌ๋ฏธ์๋ ์ฃผ์ ๋ก ์ด์ผ๊ธฐ๋ฅผ ๋๋ ๋ณผ ๊ฑฐ์ผ. ๋ฐ๋ก ๋์ ์์ฑ์ ๋ํด์ ๋ง์ด์ง. ํนํ ์ฐ๋ฆฌ๊ฐ ์ง์ค์ ์ผ๋ก ์ดํด๋ณผ ๊ฑด ์ ํ ํฉ๋ ์์ฑ๊ธฐ(Linear Congruential Generator, LCG)๋ผ๋ ๋ ์์ด์ผ. ์ด๊ฒ ๋ญ์ง ๋ชจ๋ฅด๊ฒ ๋ค๊ณ ? ๊ฑฑ์ ๋ง! ๋ด๊ฐ ์ฝ๊ณ ์ฌ๋ฏธ์๊ฒ ์ค๋ช ํด์ค๊ฒ. ๐
์ฐ๋ฆฌ๊ฐ ํ๋ก๊ทธ๋จ์ ๋ง๋ค ๋, ํนํ ๊ฒ์์ด๋ ์๋ฎฌ๋ ์ด์ ๊ฐ์ ๊ฑธ ๋ง๋ค ๋ ๋ฌด์์์ฑ์ด ํ์ํ ๊ฒฝ์ฐ๊ฐ ๋ง์. ์๋ฅผ ๋ค์ด, ์ฃผ์ฌ์๋ฅผ ๊ตด๋ฆฌ๊ฑฐ๋ ์นด๋๋ฅผ ์๋ ๊ฒ์ฒ๋ผ ๋ง์ด์ผ. ์ด๋ฐ ๋ฌด์์์ฑ์ ์ปดํจํฐ์์ ๊ตฌํํ๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผ ํ ๊น? ๋ฐ๋ก ์ฌ๊ธฐ์ ๋์ ์์ฑ์ด ๋ฑ์ฅํ๋ ๊ฑฐ์ง!
๊ทธ๋ฐ๋ฐ ๋ง์ด์ผ, ์ปดํจํฐ๋ ์ฌ์ค ์ง์ ํ ์๋ฏธ์ '๋ฌด์์'๋ฅผ ๋ง๋ค์ด๋ด๊ธฐ ์ด๋ ค์. ์๋ํ๋ฉด ์ปดํจํฐ๋ ์ ํด์ง ๊ท์น์ ๋ฐ๋ผ ๋์ํ๋ ๊ธฐ๊ณ๋๊น. ๊ทธ๋์ ์ฐ๋ฆฌ๋ '์์ฌ ๋์(Pseudo-random numbers)'๋ผ๋ ๊ฑธ ์ฌ์ฉํด. ์ด๊ฒ ๋ฐ๋ก ์ ํ ํฉ๋ ์์ฑ๊ธฐ๊ฐ ํ๋ ์ผ์ด์ผ!
๐ค ์ ๊น! ์์ฌ ๋์๊ฐ ๋ญ๋๊ณ ?
์์ฌ ๋์๋ ์ง์ง ๋ฌด์์๋ ์๋์ง๋ง, ํต๊ณ์ ์ผ๋ก ๋ฌด์์์ฒ๋ผ ๋ณด์ด๋ ์์ด์ ๋งํด. ์ถฉ๋ถํ ๊ธธ๊ณ ๋ณต์กํด์ ์์ธกํ๊ธฐ ์ด๋ ต๊ฒ ๋ง๋ ์์ด์ด์ง. ๋ง์น ์ง์ง ์ฃผ์ฌ์๋ฅผ ๋์ง ๊ฒ์ฒ๋ผ ๋ณด์ด๊ฒ ํ๋ ๊ฑฐ์ผ!
์, ์ด์ ๋ณธ๊ฒฉ์ ์ผ๋ก ์ ํ ํฉ๋ ์์ฑ๊ธฐ์ ๋ํด ์์๋ณด์. ์ด ๋ฐฉ๋ฒ์ ๊ฐ๋จํ๋ฉด์๋ ํจ๊ณผ์ ์ด์ด์ ๋ง์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ์์คํ ์์ ๊ธฐ๋ณธ ๋์ ์์ฑ๊ธฐ๋ก ์ฌ์ฉ๋๊ณ ์์ด. C ์ธ์ด๋ก ๊ตฌํํ๋ฉด ํนํ ์ข์ง. ๊ทธ๋์ ์ฐ๋ฆฌ์ ์ฌ๋ฅ๋ท ์ฌ์ดํธ์์๋ ์ด๋ฐ ๊ธฐ์ ์ ํ์ฉํ ํ๋ก์ ํธ๋ค์ด ์ข ์ข ์ฌ๋ผ์ค๊ณค ํด. ๐
๐ข ์ ํ ํฉ๋ ์์ฑ๊ธฐ์ ์๋ฆฌ
์ ํ ํฉ๋ ์์ฑ๊ธฐ๋ ๋ค์๊ณผ ๊ฐ์ ์ํ์ ๊ณต์์ ์ฌ์ฉํด:
Xn+1 = (aXn + c) mod m
์ด, ์ด๊ฒ ๋ญ ์๋ฆฌ๋๊ณ ? ๊ฑฑ์ ๋ง! ํ๋์ฉ ์ฐจ๊ทผ์ฐจ๊ทผ ์ค๋ช ํด์ค๊ฒ. ๐
- ๐ธ Xn: ํ์ฌ์ ๋์
- ๐ธ Xn+1: ๋ค์์ ์์ฑ๋ ๋์
- ๐ธ a: ๊ณฑ์ (multiplier)
- ๐ธ c: ์ฆ๋ถ (increment)
- ๐ธ m: ๋ชจ๋๋ฌ (๋๋์ ์ ์ ์)
์ด ๊ณต์์ ์ฌ์ฉํ๋ฉด, ์ด์ ์ ์์ฑ๋ ๋์๋ฅผ ์ด์ฉํด ๋ค์ ๋์๋ฅผ ๋ง๋ค์ด๋ด๋ ๊ฑฐ์ผ. ๋ง์น ์ฃผ์ฌ์๋ฅผ ๊ณ์ ๊ตด๋ฆฌ๋ ๊ฒ์ฒ๋ผ ๋ง์ด์ง. ๊ทธ๋ฐ๋ฐ ์ด '์ฃผ์ฌ์'๋ ์ฐ๋ฆฌ๊ฐ ์ ํ ๊ท์น์ ๋ฐ๋ผ ๊ตด๋ฌ๊ฐ๋ ํน๋ณํ ์ฃผ์ฌ์์ธ ์ ์ด์ผ.
๐ก ์ฌ๋ฏธ์๋ ์ฌ์ค: ์ด ๋ฐฉ๋ฒ์ 1951๋ ์ D. H. Lehmer๊ฐ ์ฒ์ ์ ์ํ์ด. ์ปดํจํฐ๊ฐ ์ง๊ธ์ฒ๋ผ ๋ฐ์ ํ๊ธฐ ํจ์ฌ ์ ์ด์ง. ๊ทธ ๋๋ถํฐ ์ง๊ธ๊น์ง ๊ณ์ ์ฌ์ฉ๋๊ณ ์๋ค๋, ์ ๋ง ๋๋จํ์ง ์์?
์, ์ด์ ์ด ๊ณต์์ ์ด๋ป๊ฒ ์ฌ์ฉํ๋์ง ์ข ๋ ์์ธํ ์์๋ณด์. ์๋ฅผ ๋ค์ด, ๋ค์๊ณผ ๊ฐ์ ๊ฐ์ ์ฌ์ฉํ๋ค๊ณ ํด๋ณด์:
- ๐ข a = 1103
- ๐ข c = 12345
- ๐ข m = 2^31 - 1 (์ด๊ฑด 2147483647์ด๋ผ๋ ํฐ ์์์ผ)
๊ทธ๋ฆฌ๊ณ ์์๊ฐ(seed)์ผ๋ก X0 = 1์ ์ฌ์ฉํ๋ค๊ณ ํ์. ๊ทธ๋ฌ๋ฉด ์ฒซ ๋ฒ์งธ ๋์๋ ์ด๋ ๊ฒ ๊ณ์ฐ๋ผ:
X1 = (1103 * 1 + 12345) mod 2147483647 = 13448
์! ์ฐ๋ฆฌ์ ์ฒซ ๋ฒ์งธ ๋์๊ฐ ํ์ํ์ด! ๐ ์ด์ ์ด 13448์ ๋ค์ ๊ณต์์ ๋ฃ์ด์ ๋ค์ ๋์๋ฅผ ๋ง๋ค๊ณ , ๋ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ์ฌ์ฉํด์ ๊ทธ ๋ค์ ๋์๋ฅผ ๋ง๋ค๊ณ ... ์ด๋ ๊ฒ ๊ณ์ ์ด์ด๋๊ฐ๋ ๊ฑฐ์ผ.
๐ฅ๏ธ C ์ธ์ด๋ก ๊ตฌํํ๊ธฐ
์, ์ด์ ์ด ๊ฐ๋ ์ ์ค์ C ์ฝ๋๋ก ๊ตฌํํด๋ณด์. ์ฌ๊ธฐ ๊ฐ๋จํ ์์ ์ฝ๋๋ฅผ ์ค๋นํ์ด:
#include <stdio.h>
#include <stdint.h>
#define A 1103515245
#define C 12345
#define M 2147483648
uint32_t seed = 1;
uint32_t rand() {
seed = (A * seed + C) % M;
return seed;
}
int main() {
for (int i = 0; i < 10; i++) {
printf("%u\n", rand());
}
return 0;
}
์ฐ์, ์ฝ๋๊ฐ ์ข ๋ณต์กํด ๋ณด์ด์ง? ๊ฑฑ์ ๋ง! ํ๋์ฉ ๋ฏ์ด์ ์ค๋ช ํด์ค๊ฒ. ๐
#include
๋ถ๋ถ: ํ์ํ ํค๋ ํ์ผ์ ํฌํจ์ํค๋ ๊ฑฐ์ผ.stdio.h
๋ ์ ์ถ๋ ฅ์,stdint.h
๋ ์ ์ ํ์ ์ ์ํด ํ์ํด.#define
๋ถ๋ถ: ์ฐ๋ฆฌ๊ฐ ์ฌ์ฉํ ์์๋ค์ ์ ์ํ๊ณ ์์ด. A, C, M์ด ๋ฐ๋ก ๊ทธ ๊ณต์์์ ๋ดค๋ ๊ฐ๋ค์ด์ง!uint32_t seed = 1;
: ์์๊ฐ(seed)์ 1๋ก ์ค์ ํ๊ณ ์์ด. ์ด ๊ฐ์ ๋ฐ๊พธ๋ฉด ๋ค๋ฅธ ๋์ ์ํ์ค๊ฐ ์์ฑ๋ผ.uint32_t rand()
ํจ์: ์ด๊ฒ ๋ฐ๋ก ์ฐ๋ฆฌ์ ๋์ ์์ฑ๊ธฐ์ผ! ๊ณต์์ ๊ทธ๋๋ก ๊ตฌํํ๊ณ ์์ง.main()
ํจ์: ์ฌ๊ธฐ์๋ ์ฐ๋ฆฌ์ ๋์ ์์ฑ๊ธฐ๋ฅผ 10๋ฒ ํธ์ถํด์ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ๊ณ ์์ด.
์ด ์ฝ๋๋ฅผ ์คํํ๋ฉด, 10๊ฐ์ '๋ฌด์์' ์ซ์๊ฐ ์ถ๋ ฅ๋ ๊ฑฐ์ผ. ํ์ง๋ง ์ด ์ซ์๋ค์ ์ฌ์ค ์์ ํ ๋ฌด์์๊ฐ ์๋๋ผ, ์ฐ๋ฆฌ๊ฐ ์ ํ ๊ท์น์ ๋ฐ๋ผ ์์ฑ๋ ๊ฑฐ์ง. ๊ทธ๋์ ์ด๊ฑธ '์์ฌ ๋์'๋ผ๊ณ ๋ถ๋ฅด๋ ๊ฑฐ์ผ.
๐ ๊ฟํ: ์ด ์ฝ๋๋ฅผ ์ฌ๋ฅ๋ท์ ์ฌ๋ ค์ ๋ค๋ฅธ ๊ฐ๋ฐ์๋ค๊ณผ ๊ณต์ ํด๋ณด๋ ๊ฑด ์ด๋? ์๋๋ฉด ์ด๋ฅผ ์์ฉํ ์ฌ๋ฏธ์๋ ํ๋ก์ ํธ๋ฅผ ๋ง๋ค์ด๋ณผ ์๋ ์๊ฒ ์ง. ๋์ ์์ฑ๊ธฐ๋ฅผ ์ด์ฉํ ๊ฐ๋จํ ๊ฒ์์ด๋ผ๋ ๊ฐ, ์๋ฎฌ๋ ์ด์ ํ๋ก๊ทธ๋จ ๊ฐ์ ๊ฑธ ๋ง์ด์ผ!
๐จ ์ ํ ํฉ๋ ์์ฑ๊ธฐ์ ์๊ฐํ
๋ง๋ก ์ค๋ช ํ๋ ๊ฒ๋ณด๋ค ๋์ผ๋ก ๋ณด๋ ๊ฒ ๋ ์ดํด๊ฐ ์ฌ์ธ ๋๊ฐ ์์ง. ๊ทธ๋์ ์ฐ๋ฆฌ์ ์ ํ ํฉ๋ ์์ฑ๊ธฐ๊ฐ ์ด๋ป๊ฒ ๋์ํ๋์ง ์๊ฐ์ ์ผ๋ก ํํํด๋ดค์ด. ํ๋ฒ ๋ณผ๊น?
์ด ๊ทธ๋ํ๋ ์ฐ๋ฆฌ์ ์ ํ ํฉ๋ ์์ฑ๊ธฐ๊ฐ ๋ง๋ค์ด๋ด๋ ๋์๋ค์ ๋ณด์ฌ์ฃผ๊ณ ์์ด. X์ถ์ ๋์๊ฐ ์์ฑ๋ ์์๋ฅผ, Y์ถ์ ์์ฑ๋ ๋์์ ๊ฐ์ ๋ํ๋ด์ง. ๋ณด์ด๋ ๊ฒ์ฒ๋ผ, ๊ฐ๋ค์ด ๊ฝค๋ ๋ถ๊ท์น์ ์ผ๋ก ํ๋ ๊ฒ ๊ฐ์ง? ์ด๊ฒ ๋ฐ๋ก ์ฐ๋ฆฌ๊ฐ ์ํ๋ '๋ฌด์์' ๊ฐ์ ๋๋์ด์ผ!
ํ์ง๋ง ์ฌ๊ธฐ์ ์ค์ํ ์ ์, ์ด ํจํด์ด ๊ฒฐ๊ตญ์ ๋ฐ๋ณต๋๋ค๋ ๊ฑฐ์ผ. ์ฐ๋ฆฌ์ ๋ชจ๋๋ฌ m์ด 2^31 - 1์ด๋๊น, ์ต๋ ์ด๋งํผ์ ์๋ก ๋ค๋ฅธ ์ซ์๋ฅผ ๋ง๋ค์ด๋ผ ์ ์์ด. ๊ทธ ๋ค์๋ถํฐ๋ ๋ค์ ์ฒ์๋ถํฐ ๊ฐ์ ์์๋ก ์ซ์๊ฐ ๋์ค๊ฒ ๋์ง. ์ด๊ฑธ '์ฃผ๊ธฐ'๋ผ๊ณ ๋ถ๋ฌ.
โ ๏ธ ์ฃผ์ํ ์ : ์ด๋ฐ ํน์ฑ ๋๋ฌธ์, ์ ํ ํฉ๋ ์์ฑ๊ธฐ๋ ์ํธํ์ ์ผ๋ก ์์ ํ์ง ์์. ์ถฉ๋ถํ ์ถ๋ ฅ๊ฐ์ ๊ด์ฐฐํ๋ฉด ๋ค์์ ๋์ฌ ๊ฐ์ ์์ธกํ ์ ์๊ฑฐ๋ . ๊ทธ๋์ ๋ณด์์ด ์ค์ํ ๊ฒฝ์ฐ์๋ ๋ค๋ฅธ ๋ฐฉ์์ ๋์ ์์ฑ๊ธฐ๋ฅผ ์ฌ์ฉํด์ผ ํด.
๐งช ์ ํ ํฉ๋ ์์ฑ๊ธฐ์ ํ์ง ํ๊ฐ
์, ์ด์ ์ฐ๋ฆฌ๊ฐ ๋ง๋ ๋์ ์์ฑ๊ธฐ๊ฐ ์ผ๋ง๋ '์ข์์ง' ํ๊ฐํด๋ณผ ์ฐจ๋ก์ผ. ๋์์ ํ์ง์ ํ๊ฐํ๋ ๋ฐฉ๋ฒ์๋ ์ฌ๋ฌ ๊ฐ์ง๊ฐ ์์ด. ๊ทธ ์ค ๋ช ๊ฐ์ง๋ฅผ ์ดํด๋ณด์!
1. ๊ท ๋ฑ ๋ถํฌ ํ ์คํธ
์ข์ ๋์ ์์ฑ๊ธฐ๋ผ๋ฉด ๋ชจ๋ ๊ฐ๋ฅํ ๊ฐ์ด ๊ฑฐ์ ๋์ผํ ๋น๋๋ก ๋์์ผ ํด. ์ด๊ฑธ ํ์ธํ๊ธฐ ์ํด ํ์คํ ๊ทธ๋จ์ ๊ทธ๋ ค๋ณผ ์ ์์ด.
์ด ํ์คํ ๊ทธ๋จ์ ๋ณด๋ฉด, ๊ฐ ๋ฒ์์ ๋์๊ฐ ๋์ฒด๋ก ๋น์ทํ ๋น๋๋ก ๋์ค๋ ๊ฒ์ ๋ณผ ์ ์์ด. ์๋ฒฝํ๊ฒ ๊ท ๋ฑํ์ง๋ ์์ง๋ง, ๊ฝค ๊ด์ฐฎ์ ๋ถํฌ๋ฅผ ๋ณด์ด๊ณ ์์ง?
2. ์๊ด๊ด๊ณ ํ ์คํธ
์ฐ์ํด์ ์์ฑ๋ ๋์๋ค ์ฌ์ด์ ์ด๋ค ๊ด๊ณ๊ฐ ์๋์ง ํ์ธํ๋ ๊ฒ๋ ์ค์ํด. ์ด๋ฅผ ์ํด ์ฐ์ ๋(scatter plot)๋ฅผ ๊ทธ๋ ค๋ณผ ์ ์์ด.
์ด ์ฐ์ ๋์์ ์ ๋ค์ด ํน์ ํจํด ์์ด ๊ณ ๋ฅด๊ฒ ํผ์ ธ ์๋ค๋ฉด, ๊ทธ๊ฑด ์ข์ ์ ํธ์ผ. ๋ง์ฝ ์ด๋ค ๋๋ ทํ ํจํด์ด ๋ณด์ธ๋ค๋ฉด, ๊ทธ๊ฑด ๋์๋ค ์ฌ์ด์ ์๊ด๊ด๊ณ๊ฐ ์๋ค๋ ๋ป์ด๊ณ , ์ด๋ ์ข์ง ์์.
3. ์ฃผ๊ธฐ ๋ถ์
์ ํ ํฉ๋ ์์ฑ๊ธฐ์ ์ฃผ๊ธฐ๋ ์ต๋ m-1์ด ๋ ์ ์์ด. ํ์ง๋ง ์ค์ ๋ก๋ ์ด๋ณด๋ค ์งง์ ๊ฒฝ์ฐ๊ฐ ๋ง์ง. ์ฃผ๊ธฐ๊ฐ ๊ธธ์๋ก ๋ ์ข์ ๋์ ์์ฑ๊ธฐ๋ผ๊ณ ํ ์ ์์ด.
๐ ๋ ๊น์ด ๋ค์ด๊ฐ๊ธฐ: ์ ํ ํฉ๋ ์์ฑ๊ธฐ์ ์ฃผ๊ธฐ๋ฅผ ์ต๋ํํ๋ ค๋ฉด ๋ค์ ์กฐ๊ฑด์ ๋ง์กฑํด์ผ ํด:
- c์ m์ ์๋ก์์ฌ์ผ ํด.
- a-1์ m์ ๋ชจ๋ ์์ธ์๋ก ๋๋์ด ๋จ์ด์ ธ์ผ ํด.
- ๋ง์ฝ m์ด 4์ ๋ฐฐ์๋ผ๋ฉด, a-1๋ 4์ ๋ฐฐ์์ฌ์ผ ํด.
์ด๋ฐ ์กฐ๊ฑด์ ๋ง์กฑํ๋ a, c, m ๊ฐ์ ์ฐพ๋ ๊ฒ์ด ์ข์ ์ ํ ํฉ๋ ์์ฑ๊ธฐ๋ฅผ ๋ง๋๋ ํต์ฌ์ด์ผ!
๐ ์ ํ ํฉ๋ ์์ฑ๊ธฐ์ ์์ฉ
์, ์ด์ ์ฐ๋ฆฌ๊ฐ ๋ง๋ ์ด ๋ฉ์ง ๋์ ์์ฑ๊ธฐ๋ฅผ ์ด๋์ ์ธ ์ ์์์ง ์๊ฐํด๋ณด์. ์ฌ์ค ๋์๋ ์ฐ๋ฆฌ ์ผ์ ๊ณณ๊ณณ์์ ์ฌ์ฉ๋๊ณ ์์ด. ๋ช ๊ฐ์ง ์ฌ๋ฏธ์๋ ์๋ฅผ ๋ค์ด๋ณผ๊ฒ!
1. ๊ฐ๋จํ ์ฃผ์ฌ์ ๊ฒ์ ๋ง๋ค๊ธฐ
๊ฐ์ฅ ์ฝ๊ฒ ์๊ฐํ ์ ์๋ ๊ฑด ์ฃผ์ฌ์ ๊ฒ์์ด์ผ. ์ฐ๋ฆฌ์ ๋์ ์์ฑ๊ธฐ๋ฅผ ์ด์ฉํด์ 1๋ถํฐ 6๊น์ง์ ์ซ์๋ฅผ ๋ฌด์์๋ก ๋ฝ์๋ด๋ ๊ฑฐ์ง. ์ฌ๊ธฐ ๊ฐ๋จํ ์์ ์ฝ๋๋ฅผ ์ค๋นํ์ด:
#include <stdio.h>
#include <stdint.h>
#include <time.h>
#define A 1103515245
#define C 12345
#define M 2147483648
uint32_t seed;
uint32_t rand() {
seed = (A * seed + C) % M;
return seed;
}
int roll_dice() {
return (rand() % 6) + 1;
}
int main() {
seed = time(NULL); // ํ์ฌ ์๊ฐ์ ์๋๋ก ์ฌ์ฉ
printf("์ฃผ์ฌ์๋ฅผ ๊ตด๋ฆฝ๋๋ค...\n");
for (int i = 0; i < 5; i++) {
printf("%d๋ฒ์งธ ๊ฒฐ๊ณผ: %d\n", i+1, roll_dice());
}
return 0;
}
์ด ์ฝ๋๋ฅผ ์คํํ๋ฉด, ๋ง์น ์ค์ ๋ก ์ฃผ์ฌ์๋ฅผ 5๋ฒ ๊ตด๋ฆฐ ๊ฒ ๊ฐ์ ๊ฒฐ๊ณผ๋ฅผ ๋ณผ ์ ์์ด. ์ฌ๋ฏธ์์ง ์์? ๐
2. ๊ฐ๋จํ ์ํธํ
๋์ ์์ฑ๊ธฐ๋ฅผ ์ด์ฉํด์ ์์ฃผ ๊ฐ๋จํ ํํ์ ์ํธํ๋ฅผ ํ ์๋ ์์ด. ์๋ฅผ ๋ค์ด, ํ ์คํธ์ ๊ฐ ๋ฌธ์๋ฅผ ๋์์ XOR ์ฐ์ฐ์ ํ๋ ๊ฑฐ์ผ. ์ด๋ ๊ฒ ํ๋ฉด ์๋ ํ ์คํธ๋ฅผ ์์๋ณด๊ธฐ ํ๋ค๊ฒ ๋ง๋ค ์ ์์ง.
#include <stdio.h>
#include <stdint.h>
#include <string.h>
// ... (์ด์ ์ rand() ํจ์๋ ๊ทธ๋๋ก ์ฌ์ฉ)
void encrypt(char* text) {
int len = strlen(text);
for (int i = 0; i < len; i++) {
text[i] = text[i] ^ (rand() & 0xFF);
}
}
int main() {
char message[] = "Hello, World!";
printf("์๋ณธ ๋ฉ์์ง: %s\n", message);
encrypt(message);
printf("์ํธํ๋ ๋ฉ์์ง: %s\n", message);
return 0;
}
๋ฌผ๋ก , ์ด ๋ฐฉ์์ ๋งค์ฐ ๊ธฐ์ด์ ์ธ ์ํธํ ๋ฐฉ๋ฒ์ด๊ณ ์ค์ ๋ก ์ค์ํ ์ ๋ณด๋ฅผ ๋ณดํธํ๋ ๋ฐ๋ ์ฌ์ฉํ๋ฉด ์ ๋ผ. ํ์ง๋ง ๋์ ์์ฑ๊ธฐ์ ํ์ฉ ๊ฐ๋ฅ์ฑ์ ๋ณด์ฌ์ฃผ๋ ์ข์ ์์์ง!
๐ก ์์ด๋์ด: ์ด๋ฐ ๊ฐ๋จํ ์ํธํ ํ๋ก๊ทธ๋จ์ ๋ง๋ค์ด์ ์ฌ๋ฅ๋ท์ ์ฌ๋ ค๋ณด๋ ๊ฑด ์ด๋? ๋ค๋ฅธ ๊ฐ๋ฐ์๋ค๊ณผ ํจ๊ป ๋ ์์ ํ๊ณ ํจ์จ์ ์ธ ์ํธํ ๋ฐฉ๋ฒ์ ๋ํด ํ ๋ก ํด๋ณผ ์ ์์ ๊ฑฐ์ผ.
3. ์๋ฎฌ๋ ์ด์
๋์ ์์ฑ๊ธฐ๋ ๋ค์ํ ์๋ฎฌ๋ ์ด์ ์์ ์์ฃผ ์ค์ํ ์ญํ ์ ํด. ์๋ฅผ ๋ค์ด, ๊ฐ๋จํ ๋ชฌํ ์นด๋ฅผ๋ก ์๋ฎฌ๋ ์ด์ ์ ํตํด ์์ฃผ์จ(ฯ)์ ์ถ์ ํด๋ณผ ์ ์์ด. ์ด๊ฒ ์ด๋ป๊ฒ ๊ฐ๋ฅํ์ง ํ๋ฒ ๋ณผ๊น?
#include <stdio.h>
#include <stdint.h>
#include <math.h>
// ... (์ด์ ์ rand() ํจ์๋ ๊ทธ๋๋ก ์ฌ์ฉ)
double random_double() {
return (double)rand() / M;
}
int main() {
int inside_circle = 0;
int total_points = 1000000;
for (int i = 0; i < total_points; i++) {
double x = random_double();
double y = random_double();
if (x*x + y*y <= 1.0) {
inside_circle++;
}
}
double pi_estimate = 4.0 * inside_circle / total_points;
printf("์ถ์ ๋ ฯ ๊ฐ: %f\n", pi_estimate);
printf("์ค์ ฯ ๊ฐ: %f\n", M_PI);
return 0;
}
์ด ํ๋ก๊ทธ๋จ์ ๋จ์ ์ ์ฌ๊ฐํ ์์ ๊ทธ๋ ค์ง 1/4 ์์ ๋ฌด์์๋ก ์ ์ ์ฐ์ด์ ์์ฃผ์จ์ ์ถ์ ํด. ์ ์ด ์ ์์ ๋ค์ด๊ฐ ํ๋ฅ ์ด ฯ/4์ ๊ฐ๋ค๋ ์๋ฆฌ๋ฅผ ์ด์ฉํ ๊ฑฐ์ง. ์ ๊ธฐํ์ง ์์? ๐ค
์ด ๊ทธ๋ฆผ์์ ํ๋ ์ ์ 1/4 ์ ์์ ๋ค์ด๊ฐ ์ ๋ค์ด๊ณ , ๋นจ๊ฐ ์ ์ ๋ฐ์ ์๋ ์ ๋ค์ด์ผ. ํ๋ ์ ์ ๋น์จ์ 4๋ฅผ ๊ณฑํ๋ฉด ฯ์ ๊ทผ์ฌ๊ฐ์ ์ป์ ์ ์์ง!
๐ฎ ์ ํ ํฉ๋ ์์ฑ๊ธฐ์ ํ๊ณ์ ๋์
์ง๊ธ๊น์ง ์ ํ ํฉ๋ ์์ฑ๊ธฐ์ ๋ํด ๋ง์ด ๋ฐฐ์ ์ง? ํ์ง๋ง ์ด ๋ฐฉ๋ฒ์๋ ํ๊ณ๊ฐ ์์ด. ๋ช ๊ฐ์ง ์ค์ํ ์ ์ ์ง์ด๋ณผ๊ฒ:
- ์ง์์ธ์ ์ฒ - ์ง์ ์ฌ์ฐ๊ถ ๋ณดํธ ๊ณ ์ง
์ง์ ์ฌ์ฐ๊ถ ๋ณดํธ ๊ณ ์ง
- ์ ์๊ถ ๋ฐ ์์ ๊ถ: ๋ณธ ์ปจํ ์ธ ๋ ์ฌ๋ฅ๋ท์ ๋ ์ AI ๊ธฐ์ ๋ก ์์ฑ๋์์ผ๋ฉฐ, ๋ํ๋ฏผ๊ตญ ์ ์๊ถ๋ฒ ๋ฐ ๊ตญ์ ์ ์๊ถ ํ์ฝ์ ์ํด ๋ณดํธ๋ฉ๋๋ค.
- AI ์์ฑ ์ปจํ ์ธ ์ ๋ฒ์ ์ง์: ๋ณธ AI ์์ฑ ์ปจํ ์ธ ๋ ์ฌ๋ฅ๋ท์ ์ง์ ์ฐฝ์๋ฌผ๋ก ์ธ์ ๋๋ฉฐ, ๊ด๋ จ ๋ฒ๊ท์ ๋ฐ๋ผ ์ ์๊ถ ๋ณดํธ๋ฅผ ๋ฐ์ต๋๋ค.
- ์ฌ์ฉ ์ ํ: ์ฌ๋ฅ๋ท์ ๋ช ์์ ์๋ฉด ๋์ ์์ด ๋ณธ ์ปจํ ์ธ ๋ฅผ ๋ณต์ , ์์ , ๋ฐฐํฌ, ๋๋ ์์ ์ ์ผ๋ก ํ์ฉํ๋ ํ์๋ ์๊ฒฉํ ๊ธ์ง๋ฉ๋๋ค.
- ๋ฐ์ดํฐ ์์ง ๊ธ์ง: ๋ณธ ์ปจํ ์ธ ์ ๋ํ ๋ฌด๋จ ์คํฌ๋ํ, ํฌ๋กค๋ง, ๋ฐ ์๋ํ๋ ๋ฐ์ดํฐ ์์ง์ ๋ฒ์ ์ ์ฌ์ ๋์์ด ๋ฉ๋๋ค.
- AI ํ์ต ์ ํ: ์ฌ๋ฅ๋ท์ AI ์์ฑ ์ปจํ ์ธ ๋ฅผ ํ AI ๋ชจ๋ธ ํ์ต์ ๋ฌด๋จ ์ฌ์ฉํ๋ ํ์๋ ๊ธ์ง๋๋ฉฐ, ์ด๋ ์ง์ ์ฌ์ฐ๊ถ ์นจํด๋ก ๊ฐ์ฃผ๋ฉ๋๋ค.
์ฌ๋ฅ๋ท์ ์ต์ AI ๊ธฐ์ ๊ณผ ๋ฒ๋ฅ ์ ๊ธฐ๋ฐํ์ฌ ์์ฌ์ ์ง์ ์ฌ์ฐ๊ถ์ ์ ๊ทน์ ์ผ๋ก ๋ณดํธํ๋ฉฐ,
๋ฌด๋จ ์ฌ์ฉ ๋ฐ ์นจํด ํ์์ ๋ํด ๋ฒ์ ๋์์ ํ ๊ถ๋ฆฌ๋ฅผ ๋ณด์ ํฉ๋๋ค.
ยฉ 2025 ์ฌ๋ฅ๋ท | All rights reserved.
๋๊ธ 0๊ฐ