대장간 - 가중치를 이용한 무기 강화
2024. 12. 24. 21:16ㆍ카테고리 없음
아이템 강화할때 가중치를 이용해서 아이템을 강화하도록 만들었다.
private List<float> probs = new List<float>{20, 200};
리스트 하나를 만들어주고 0번째 인덱스 자리에 있는 숫자가 실패할 확률 1번째 인덱스자리에 있는 숫자가 성공 확률이다.
그래서 1번째 인덱스 값을 몇강인지에 따라서 강화확률이 줄어들게 만들었다.
private void EnhancementProbability()
{
if (_item.enhance < 10)
{
probs[1] = 200 - _item.enhance * 20;
}
else if (_item.enhance < 20)
{
probs[1] = probs[0] - _item.enhance;
}
else if (_item.enhance < 50)
{
probs[1] = (float)(1 - 0.02 * _item.enhance);
}
else
{
probs[1] = 0.001f;
}
}
밑에 코드가 가중치를 이용해서 아이템 강화를 결정하는 코드이다.
private bool GetGradeType() //가중치 랜덤
{
EnhancementProbability();
total = 0;
for (int i = 0; i < probs.Count; i++)
{
total += probs[i];
}
System.Random random = new System.Random();
float randomValue = (float)random.NextDouble() * total;
for (int i = 0; i < probs.Count; i++)
{
if (randomValue < probs[i])
{
return i == 1;
}
randomValue -= probs[i];
}
return false;
}