본문 바로가기
개발개발/c++ 예제

c++ if문과 난수를 이용한 예제

by 유잉유잉유잉 2024. 12. 5.
728x90

예제 조건 :

강화 수치를 저장하는 int 변수 하나가 있다. 
강화 수치가 0~3 사이일 경우 100% 확률로 강화 성공
4-6 사이일 경우 50% 확률로 강화 성공
7-9 사이일 경우 20%
10 - 12, 2%
13이상일 경우 0.7%

 

나의 풀이 

int upgrade = 13;
printf("----------- 이전 강화 수치 : %d\n", upgrade);


// 0-3 100% 강화성공
if ( upgrade <= 3 )
{
    printf("강화성공! 강화된 수치 : %d", ++upgrade);
}
else
{
    srand(time(0));
    int random = rand();
    random = rand() % 100;

    if (upgrade >= 4 && upgrade <= 6)
    {
        if (random >= 50)
            printf("강화성공! 강화된 수치 : %d, 랜덤수치 : %d", ++upgrade, random);
        else
            printf("강화실패! 강화 수치 : %d, 랜덤수치 : %d", upgrade, random);
    }
    else if (upgrade >= 7 && upgrade <= 9)
    {
        if (random <= 20)
            printf("강화성공! 강화된 수치 : %d, 랜덤수치 : %d", ++upgrade, random);
        else
            printf("강화실패! 강화 수치 : %d, 랜덤수치 : %d", upgrade, random);

    }
    else if (upgrade >= 10 && upgrade <= 12)
    {
        if (random <= 2)
            printf("강화성공! 강화된 수치 : %d, 랜덤수치 : %d", ++upgrade, random);
        else
            printf("강화실패! 강화 수치 : %d, 랜덤수치 : %d", upgrade, random);
    }
    else
    {
        // 13이상일 경우 0.7%
        random = rand() % 1000;

        if (random <= 7)
            printf("강화성공! 강화된 수치 : %d, 랜덤수치 : %d", ++upgrade, random);
        else
            printf("강화실패! 강화 수치 : %d, 랜덤수치 : %d", upgrade, random);
    }
}

 

강사님 풀이 

unsigned int lv = 9;
float percent = rand() % 10001 * 0.01f;
std::cout << percent << " [확률]" << std::endl;

if (lv <= 3)
{
    std::cout << ++lv << " [성공]" << std::endl;
}
else if (lv <= 6)
{
    if (percent <= 50.1)
    {
        std::cout << ++lv << "[성공]" << std::endl;
    }
    else
    {
        std::cout << "[실패]" << std::endl;
    }
}
else if (lv <= 9)
{
    if (percent <= 20.1)
    {
        std::cout << ++lv << "[성공]" << std::endl;
    }
    else
    {
        std::cout << "[실패]" << std::endl;
    }
}
else if (lv <= 12)
{
    if (percent <= 2.1)
    {
        std::cout << ++lv << "[성공]" << std::endl;
    }
    else
    {
        std::cout << "[실패]" << std::endl;
    }
}
else
{
    if (percent <= 0.71)
    {
        std::cout << ++lv << "[성공]" << std::endl;
    }
    else
    {
        std::cout << "[실패]" << std::endl;
    }
}
728x90

'개발개발 > c++ 예제' 카테고리의 다른 글

빙고  (0) 2024.12.14
반복문, 난수, 입력(cin)을 사용하는 예제  (1) 2024.12.06

댓글