๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
์ผ์ƒ

C++๋กœ ์ฃผ์‚ฌ์œ„ ๊ตด๋ฆฌ๊ธฐ ํ”„๋กœ๊ทธ๋žจ ๋งŒ๋“ค๊ธฐ - ์™„๋ฒฝ ๊ฐ€์ด๋“œ

by 6story 2025. 2. 22.
๋ฐ˜์‘ํ˜•

๐ŸŽฒC++์—์„œ ๋žœ๋ค ์ฃผ์‚ฌ์œ„๋ฅผ ๊ตด๋ฆฌ๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ๊ณ  ์‹ถ๋‚˜์š”?

๊ฒŒ์ž„์„ ๋งŒ๋“ค๊ฑฐ๋‚˜ ๋žœ๋ค ์ด๋ฒคํŠธ๋ฅผ ์ถ”๊ฐ€ํ•  ๋•Œ ์ฃผ์‚ฌ์œ„ ๊ตด๋ฆฌ๊ธฐ ๊ธฐ๋Šฅ์€ ๋งค์šฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. ํŠนํžˆ, C++์—์„œ ์ฃผ์‚ฌ์œ„๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ฐฐ์šฐ๋ฉด ๋žœ๋ค ์ˆซ์ž ์ƒ์„ฑ ์›๋ฆฌ์™€ ํ•จ๊ป˜ ์‹ค์ „ ์ฝ”๋”ฉ ๋Šฅ๋ ฅ๋„ ํ‚ค์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๊ธ€์—์„œ๋Š” C++์„ ํ™œ์šฉํ•œ ์ฃผ์‚ฌ์œ„ ๊ตด๋ฆฌ๊ธฐ ํ”„๋กœ๊ทธ๋žจ์„ ๋‹จ๊ณ„๋ณ„๋กœ ์„ค๋ช…ํ•˜๊ณ , ๊ตฌ์ฒด์ ์ธ ์ฝ”๋“œ ์˜ˆ์ œ์™€ ์ตœ์ ํ™” ํŒ์„ ํ•จ๊ป˜ ์ œ๊ณตํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.


๐Ÿ“– ๋ชฉ์ฐจ

  1. C++์—์„œ ๋žœ๋ค ์ˆซ์ž ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•
  2. ์ฃผ์‚ฌ์œ„ ๊ตด๋ฆฌ๊ธฐ ๊ธฐ๋ณธ ์ฝ”๋“œ ์ž‘์„ฑ
  3. ๋‹ค์–‘ํ•œ ์ฃผ์‚ฌ์œ„(6๋ฉด, 20๋ฉด ๋“ฑ) ๊ตด๋ฆฌ๊ธฐ ๊ตฌํ˜„
  4. ๋ฐ˜๋ณต์ ์œผ๋กœ ์ฃผ์‚ฌ์œ„ ๊ตด๋ฆฌ๊ธฐ & ์‚ฌ์šฉ์ž ์ž…๋ ฅ ์ถ”๊ฐ€
  5. ๊ณ ๊ธ‰ ๋žœ๋ค ํ•จ์ˆ˜ ํ™œ์šฉ ๋ฐ ์ตœ์ ํ™”
  6. ์ตœ์ข… ์ฝ”๋“œ ๋ฐ ์‘์šฉ ์˜ˆ์ œ

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์„ ํ™œ์šฉํ•œ ์ •๊ตํ•œ ๋‚œ์ˆ˜ ์ƒ์„ฑ

์ด์ œ ์ง์ ‘ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•ด๋ณด๊ณ  ์—ฌ๋Ÿฌ๋ถ„๋งŒ์˜ ์ฃผ์‚ฌ์œ„ ๊ตด๋ฆฌ๊ธฐ ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“ค์–ด๋ณด์„ธ์š”! ๐Ÿš€

728x90
๋ฐ˜์‘ํ˜•