๐ฒC++์์ ๋๋ค ์ฃผ์ฌ์๋ฅผ ๊ตด๋ฆฌ๋ ๋ฐฉ๋ฒ์ ์๊ณ ์ถ๋์?
๊ฒ์์ ๋ง๋ค๊ฑฐ๋ ๋๋ค ์ด๋ฒคํธ๋ฅผ ์ถ๊ฐํ ๋ ์ฃผ์ฌ์ ๊ตด๋ฆฌ๊ธฐ ๊ธฐ๋ฅ์ ๋งค์ฐ ์ ์ฉํฉ๋๋ค. ํนํ, C++์์ ์ฃผ์ฌ์๋ฅผ ๊ตฌํํ๋ ๋ฐฉ๋ฒ์ ๋ฐฐ์ฐ๋ฉด ๋๋ค ์ซ์ ์์ฑ ์๋ฆฌ์ ํจ๊ป ์ค์ ์ฝ๋ฉ ๋ฅ๋ ฅ๋ ํค์ธ ์ ์์ต๋๋ค.
์ด ๊ธ์์๋ C++์ ํ์ฉํ ์ฃผ์ฌ์ ๊ตด๋ฆฌ๊ธฐ ํ๋ก๊ทธ๋จ์ ๋จ๊ณ๋ณ๋ก ์ค๋ช ํ๊ณ , ๊ตฌ์ฒด์ ์ธ ์ฝ๋ ์์ ์ ์ต์ ํ ํ์ ํจ๊ป ์ ๊ณตํ๊ฒ ์ต๋๋ค.
๐ ๋ชฉ์ฐจ
- C++์์ ๋๋ค ์ซ์ ์์ฑํ๋ ๋ฐฉ๋ฒ
- ์ฃผ์ฌ์ ๊ตด๋ฆฌ๊ธฐ ๊ธฐ๋ณธ ์ฝ๋ ์์ฑ
- ๋ค์ํ ์ฃผ์ฌ์(6๋ฉด, 20๋ฉด ๋ฑ) ๊ตด๋ฆฌ๊ธฐ ๊ตฌํ
- ๋ฐ๋ณต์ ์ผ๋ก ์ฃผ์ฌ์ ๊ตด๋ฆฌ๊ธฐ & ์ฌ์ฉ์ ์ ๋ ฅ ์ถ๊ฐ
- ๊ณ ๊ธ ๋๋ค ํจ์ ํ์ฉ ๋ฐ ์ต์ ํ
- ์ต์ข ์ฝ๋ ๋ฐ ์์ฉ ์์
1๏ธโฃ C++์์ ๋๋ค ์ซ์ ์์ฑํ๋ ๋ฐฉ๋ฒ
๐น rand() ํจ์ ํ์ฉํ๊ธฐ
C++์์ ๋์๋ฅผ ์์ฑํ๋ ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ๋ฐฉ๋ฒ์ rand() ํจ์๋ฅผ ์ด์ฉํ๋ ๊ฒ์ ๋๋ค.
#include <iostream>
#include <cstdlib> // rand() ํจ์ ํฌํจ
int main() {
std::cout << "๋๋ค ์ซ์: " << rand() << std::endl;
return 0;
}
ํ์ง๋ง, rand() ํจ์๋ง ์ฌ์ฉํ๋ฉด ํญ์ ๋์ผํ ๋์๋ฅผ ์ป์ ์ ์์ต๋๋ค. ์ด๋ฅผ ๋ฐฉ์งํ๋ ค๋ฉด srand() ํจ์๋ฅผ ํ์ฉํ์ฌ ์๋(seed)๋ฅผ ์ค์ ํด์ผ ํฉ๋๋ค.
#include <iostream>
#include <cstdlib>
#include <ctime>
int main() {
srand(time(0)); // ํ์ฌ ์๊ฐ์ ๊ธฐ์ค์ผ๋ก ๋์ ์์ฑ
std::cout << "๋๋ค ์ซ์: " << rand() << std::endl;
return 0;
}
์ด์ ์คํํ ๋๋ง๋ค ๋ค๋ฅธ ๋์๊ฐ ์์ฑ๋ฉ๋๋ค! ๐ฒ
2๏ธโฃ ์ฃผ์ฌ์ ๊ตด๋ฆฌ๊ธฐ ๊ธฐ๋ณธ ์ฝ๋ ์์ฑ
์ฃผ์ฌ์๋ ์ผ๋ฐ์ ์ผ๋ก 1๋ถํฐ 6๊น์ง์ ์ซ์๋ฅผ ๋๋คํ๊ฒ ์ถ๋ ฅํด์ผ ํฉ๋๋ค. rand()๋ฅผ ์ด์ฉํด ๋ฒ์๋ฅผ ์กฐ์ ํ๋ฉด ๊ฐ๋จํ ๊ตฌํํ ์ ์์ต๋๋ค.
#include <iostream>
#include <cstdlib>
#include <ctime>
int main() {
srand(time(0));
int dice = (rand() % 6) + 1; // 1~6 ์ฌ์ด์ ์ซ์ ์์ฑ
std::cout << "์ฃผ์ฌ์ ๊ฒฐ๊ณผ: " << dice << std::endl;
return 0;
}
๐ rand() % 6์ 05 ์ฌ์ด์ ์ซ์๋ฅผ ์์ฑํ๋ฉฐ, +1์ ์ถ๊ฐํ๋ฉด 16 ๋ฒ์๊ฐ ๋ฉ๋๋ค.
3๏ธโฃ ๋ค์ํ ์ฃผ์ฌ์(6๋ฉด, 20๋ฉด ๋ฑ) ๊ตด๋ฆฌ๊ธฐ ๊ตฌํ
6๋ฉด ์ฃผ์ฌ์๋ฟ๋ง ์๋๋ผ, 20๋ฉด ์ฃผ์ฌ์(D20), 10๋ฉด ์ฃผ์ฌ์(D10) ๋ฑ ๋ค์ํ ์ฃผ์ฌ์๋ฅผ ๊ตฌํํ ์๋ ์์ต๋๋ค.
#include <iostream>
#include <cstdlib>
#include <ctime>
int rollDice(int sides) {
return (rand() % sides) + 1;
}
int main() {
srand(time(0));
std::cout << "6๋ฉด ์ฃผ์ฌ์: " << rollDice(6) << std::endl;
std::cout << "20๋ฉด ์ฃผ์ฌ์: " << rollDice(20) << std::endl;
return 0;
}
์ด์ 6๋ฉด, 20๋ฉด, ์ํ๋ ๋ฉด์๋ฅผ ๊ฐ์ง ์ฃผ์ฌ์๋ฅผ ์์ฝ๊ฒ ๋ง๋ค ์ ์์ต๋๋ค!
4๏ธโฃ ๋ฐ๋ณต์ ์ผ๋ก ์ฃผ์ฌ์ ๊ตด๋ฆฌ๊ธฐ & ์ฌ์ฉ์ ์ ๋ ฅ ์ถ๊ฐ
์ฌ์ฉ์๊ฐ ์ํ ๋๋ง๋ค ์ฃผ์ฌ์๋ฅผ ๊ตด๋ฆด ์ ์๋๋ก ์ ๋ ฅ์ ์ถ๊ฐํด๋ณด๊ฒ ์ต๋๋ค.
#include <iostream>
#include <cstdlib>
#include <ctime>
int main() {
srand(time(0));
char choice;
do {
int dice = (rand() % 6) + 1;
std::cout << "์ฃผ์ฌ์ ๊ฒฐ๊ณผ: " << dice << std::endl;
std::cout << "๋ค์ ๊ตด๋ฆฌ์๊ฒ ์ต๋๊น? (y/n): ";
std::cin >> choice;
} while (choice == 'y');
return 0;
}
์ด์ ์ฌ์ฉ์๊ฐ ‘y’๋ฅผ ์ ๋ ฅํ๋ฉด ๊ณ์ ์ฃผ์ฌ์๋ฅผ ๊ตด๋ฆด ์ ์์ต๋๋ค! ๐ฒ
5๏ธโฃ ๊ณ ๊ธ ๋๋ค ํจ์ ํ์ฉ ๋ฐ ์ต์ ํ
๐น random_device์ mt19937 ์ฌ์ฉํ๊ธฐ
rand() ํจ์๋ ์๋ฒฝํ ๋์๋ฅผ ์ ๊ณตํ์ง ์๊ธฐ ๋๋ฌธ์, ๋ณด๋ค ์ ๊ตํ ๋์ ์์ฑ์ ์ํด random_device์ mt19937์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
#include <iostream>
#include <random>
int main() {
std::random_device rd;
std::mt19937 gen(rd());
std::uniform_int_distribution<int> dist(1, 6);
std::cout << "์ฃผ์ฌ์ ๊ฒฐ๊ณผ: " << dist(gen) << std::endl;
return 0;
}
์ด ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๋ฉด ๋ณด๋ค ์ ๋ขฐํ ์ ์๋ ๋์ ์์ฑ์ด ๊ฐ๋ฅํฉ๋๋ค.
6๏ธโฃ ์ต์ข ์ฝ๋ ๋ฐ ์์ฉ ์์
์ง๊ธ๊น์ง ๋ฐฐ์ด ๋ด์ฉ์ ์ข ํฉํ์ฌ ์ต์ ํ๋ ์ฃผ์ฌ์ ํ๋ก๊ทธ๋จ์ ๋ง๋ค์ด๋ณด๊ฒ ์ต๋๋ค.
#include <iostream>
#include <random>
int rollDice(int sides) {
std::random_device rd;
std::mt19937 gen(rd());
std::uniform_int_distribution<int> dist(1, sides);
return dist(gen);
}
int main() {
char choice;
do {
std::cout << "๊ตด๋ฆด ์ฃผ์ฌ์์ ๋ฉด ์๋ฅผ ์
๋ ฅํ์ธ์: ";
int sides;
std::cin >> sides;
std::cout << "์ฃผ์ฌ์ ๊ฒฐ๊ณผ: " << rollDice(sides) << std::endl;
std::cout << "๋ค์ ๊ตด๋ฆฌ์๊ฒ ์ต๋๊น? (y/n): ";
std::cin >> choice;
} while (choice == 'y');
return 0;
}
์ด์ ์ฌ์ฉ์๊ฐ ์ํ๋ ๋ฉด ์์ ์ฃผ์ฌ์๋ฅผ ์ ๋ ฅํ๊ณ ๋ฐ๋ณต์ ์ผ๋ก ๊ตด๋ฆด ์ ์์ต๋๋ค! ๐ฒ
๐ฏ ๋ง๋ฌด๋ฆฌ
์ด์ C++์์ ์ฃผ์ฌ์๋ฅผ ๊ตฌํํ๋ ๋ค์ํ ๋ฐฉ๋ฒ์ ๋ฐฐ์ ์ต๋๋ค!
โ rand()์ srand(time(0))์ ์ด์ฉํ ๊ธฐ๋ณธ ๊ตฌํ โ ์ํ๋ ๋ฉด์๋ฅผ ์ค์ ํ ์ ์๋ ๋ฒ์ฉ ํจ์ ์์ฑ โ random_device์ mt19937์ ํ์ฉํ ์ ๊ตํ ๋์ ์์ฑ
์ด์ ์ง์ ์ฝ๋๋ฅผ ์คํํด๋ณด๊ณ ์ฌ๋ฌ๋ถ๋ง์ ์ฃผ์ฌ์ ๊ตด๋ฆฌ๊ธฐ ํ๋ก๊ทธ๋จ์ ๋ง๋ค์ด๋ณด์ธ์! ๐