이 강의는 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 문을 사용하여 강화 단계에 따른 성공 확률을 다르게 설정하고, 이를 기반으로 성공 여부를 결정합니다.이 내용을 바탕으로 난수 생성과 확률 계산, 그리고 조건문 활용 방법을 복습할 수 있도록 블로그에 정리해보세요!