2010-11-21 6 views
0

"전투"에서 두 플레이어가 서로 마주 보는 프로그램을 만들고 각 플레이어는 스킬 레벨이 1에서 100 사이의 숫자로 표시되며이 숫자는 어느 플레이어 플레이어 A가 50이고 플레이어 B가 100 인 경우 B가 전투에서 승리 할 확률이 50 % 더 높으면 두 플레이어의 스킬 수준을 알 수있는 좋은 방법은 무엇입니까?스킬 레벨에서 승률 결정

여러 가지 방법을 시도했습니다. 예를 들어 스킬 레벨을 모두 추가하고 숫자가 플레이어 스킬보다 작 으면이 범위에서 임의의 숫자를 선택하여 던집니다.하지만이 방법이 좋은지 잘 모릅니다. 확률이 떨어지는 것 같아요. 규칙을 사용하려고했는데, 예를 들어 같은 스킬을 가진 사람이 50 % (다른 사람이 이길 수 있음)가 다른 플레이어의 절반 인 경우 25 %의 확률로 더 낮은 플레이어에게 기회가 주어 지지만 이렇게하면 복잡해집니다. 이 계산을 수행하는 방법에 대한 모든 포인터가 있습니까?

당신의 도움에 미리 감사

-hei

+0

사용자가 스킬 레벨이 같을 때해야 할 일에 대해 구체적으로 묻는 중입니까? –

+0

@Cody Grey - 아니요. 플레이어가 상대방의 기술 수준을 알 수있는 기회를 얻는 방법에 대해 묻고 있습니다. 스킬 레벨이 동등한 경우, 그 중 어느 것에 대해서도 50 %의 확률이 있습니다. 맞춤법을 편집하십시오. – Hei

답변

0

플레이어 A (50)이 있고 플레이어 B는 다음 100을 가지고 B는 전투

승리의 50 % 더 많은 기회가있는 경우 플레이어 B가 두 번 자주 우승해야한다는 의미라면이 작품은 다음과 같습니다 :

r = random(1, A+B) 
if r <= A 
    winner = 'A' 
else 
    winner = 'B' 

우승자 A가 50/150 또는 1/3의 우승 확률. 승자 B는 2/3의 시간 (2 배)을 얻습니다.

어쩌면 거리가 무게 일 수도 있습니다. 예 : 10 대 5는 5 %의 이점이 있어야합니다.

그럼 당신은 (B >= A 가정)을 시도 할 수 :

r = random(1, 200 + B - A) 
if r <= 100 
    winner = 'A' 
else 
    winner = 'B' 

그래서 A == B 다음 기회도있는 경우.

+0

답변 해 주셔서 감사합니다. 문제를 확률로 보려고했으나 설명하는 방식이 더 이해가됩니다. B와 50 % (1/2)를 두 번 (1/3과 2/3) 혼동 시켰습니다.) 또한 필자는 수학 기술을 연마 할 필요가있다. 파이썬이나 의사 코드 일 뿐이다. – Hei

+0

아, 편집을 보지 못했습니다. 조금만 설명해 주시면 두 번째 해결책과 다소 혼동 스럽습니까? 감사합니다 – Hei

+0

그냥 psuedocode입니다. 첫 번째 버전에서 1 대 2와 50 대 100은 동일한 것입니다. B가 2 배나 우승합니다. 두 번째 버전에서는 A와 B 사이의 거리가 확률을 결정합니다. 5 대 10은 5의 차이입니다. 따라서 A로 승리 할 때마다 B가 1.05 배 (5 % 이상) 더 많이 이기기를 기대할 수 있습니다. 50 vs 100은 50의 차이이므로 A로 승리 할 때마다 B로 1.5 (50 % 더)를 기대할 수 있습니다. – Matthew