이 강의는 C++에서 난수 생성 및 이를 활용한 확률 계산과 if
문을 사용한 조건 처리를 다루고 있습니다. 주석을 포함하여 코드의 각 줄을 분석하고, 관련 개념을 자세히 정리하겠습니다. 이 내용을 블로그에 정리하여 복습할 수 있도록 하겠습니다.
// 난수 발생
srand((unsigned int)time(0));
srand()
함수는 난수 생성기를 초기화하는 함수입니다. 여기서는 현재 시간을 seed
값으로 사용하여 매번 다른 난수가 생성되도록 합니다.(unsigned int)time(0)
: time(0)
은 현재 시간을 초 단위로 반환하며, 이를 unsigned int
로 캐스팅하여 srand()
에 전달합니다. 이로 인해 매번 프로그램을 실행할 때마다 다른 난수가 생성됩니다.cout << rand() << endl;
cout << rand() << endl;
cout << rand() << endl;
rand()
함수는 0부터 RAND_MAX
(보통 32767) 사이의 난수를 생성합니다. 여기서는 세 번의 난수를 출력합니다. 이때 출력되는 난수는 srand()
로 초기화된 시드에 따라 달라집니다.// 100 부터 200 사이에 난수 생성
cout << (rand() % 100 + 100) << endl;
(rand() % 100 + 100)
은 100부터 199 사이의 난수를 생성합니다.rand() % 100
은 0부터 99 사이의 난수를 생성하며, 여기에 100을 더하여 100부터 199 사이의 난수를 얻을 수 있습니다.// 소수점 두자리 까지 난수 생성
cout << (rand() % 100000 / 100.f) << endl;
(rand() % 100000 / 100.f)
은 0.00부터 999.99 사이의 난수를 생성합니다.rand() % 100000
은 0부터 99999까지의 정수를 생성하며, 이를 100으로 나누어 소수점 두 자리까지 표현합니다.int iUpgrade = 0;
// 강화 확률을 구한다.
float fPercent = rand() % 10000 / 100.f;
float fNumber;
iUpgrade
는 현재 아이템의 강화 단계를 나타냅니다.fPercent
는 0.00부터 99.99까지의 난수를 생성하여 강화 성공 확률을 계산하는 데 사용됩니다.// 강화 확률 : 업그레이드가 0 ~ 3 : 100%, 4~6 : 40%, 7~9 : 10%, 10 ~ 13 : 1%, 14 ~ 15 : 0.01%
cout << "Upgrade : " << iUpgrade << endl;
cout << "Percent : " << fPercent << endl;
iUpgrade
(강화 단계)와 fPercent
(난수로 계산된 확률)을 출력합니다.if (iUpgrade <= 3)
{
cout << "강화 성공" << endl;
}
else if(4 <= iUpgrade && iUpgrade <= 6)
{
if (fPercent < 40.f)
{
cout << "강화 성공" << endl;
}
else
{
cout << "강화 실패" << endl;
}
}
else if (7 <= iUpgrade && iUpgrade <= 9)
{
if (fPercent < 10.f)
{
cout << "강화 성공" << endl;
}
else
{
cout << "강화 실패" << endl;
}
}
else if (10 <= iUpgrade && iUpgrade <= 13)
{
if (fPercent < 1.f)
{
cout << "강화 성공" << endl;
}
else
{
cout << "강화 실패" << endl;
}
}
else if (14 <= iUpgrade && iUpgrade <= 15)
{
if (fPercent < 0.01f)
{
cout << "강화 성공" << endl;
}
else
{
cout << "강화 실패" << endl;
}
}
iUpgrade
의 값에 따라 다른 확률로 강화 성공 여부를 결정합니다.0 <= iUpgrade <= 3
: 100% 성공.4 <= iUpgrade <= 6
: 40% 성공. (fPercent < 40.f
)7 <= iUpgrade <= 9
: 10% 성공. (fPercent < 10.f
)10 <= iUpgrade <= 13
: 1% 성공. (fPercent < 1.f
)14 <= iUpgrade <= 15
: 0.01% 성공. (fPercent < 0.01f
)fPercent
가 해당하는 확률보다 작으면 강화에 성공하고, 크면 강화에 실패합니다.이 강의에서는 C++에서 난수를 생성하고, 이를 활용하여 강화 확률을 계산하는 방법을 학습했습니다. 주요 내용은 다음과 같습니다:
srand()
로 난수 생성기를 초기화한 후, rand()
를 사용하여 난수를 생성할 수 있습니다.rand()
와 모듈러 연산(%
)을 활용하여 특정 범위의 난수를 생성할 수 있으며, 소수점 두 자리의 난수도 생성 가능합니다.fPercent
)을 활용하여 특정 강화 단계에서 성공 여부를 판단합니다.if
, else if
, else
문을 사용하여 강화 단계에 따른 성공 확률을 다르게 설정하고, 이를 기반으로 성공 여부를 결정합니다.이 내용을 바탕으로 난수 생성과 확률 계산, 그리고 조건문 활용 방법을 복습할 수 있도록 블로그에 정리해보세요!