Wyjasnienie działania kodu

0

To mój 1 post na tym forum więc witam wszystkich!
Założyłem ten temat, ponieważ chciałbym fachowca o pewną rzecz. Mianowicie gram w pewną gierkę w której jest wykorzystywany skrypt, który oblicza szanse trafienia przeciwnika. Otrzymałem skrypt z gry z zapewnieniem, że wszystko jest ok, ale mi i tak coś nie pasuje.
Moim zdaniem skrypt wybiera losową liczbę, ale nie zawsze od 1-100 tak jak być powinno. Szansa trafienia jest oczywiście w procentach

[code]

private boolean trafil(int paAtak,Zawodnik atak,Zawodnik cel)
{
double mod=cel.getModObronaFiz() > 20 ? cel.getModObronaFiz() : 20;
int paObrona=(int)Math.round((cel.getPoziom()+bazaWsp+cel.getZrecznosc())*cel.getObronaFiz()*mod/100);
mod=atak.getModAtakFiz() > 20 ? atak.getModAtakFiz() : 20;
int paAtakA=(int)Math.round((atak.getPoziom()+bazaWsp+atak.getZrecznosc())paAtakmod/100);

  int suma=paAtakA+paObrona;
  if (suma==0)
     wspPowodzenia=100;
  else
     wspPowodzenia=100*paAtakA/suma;
        
  if ((int)(Math.random()*suma)<=paAtakA)
     return true;
  else
     return false;

}

[/code]

paObrona oraz paAtakA mogą to być najróżniejsze liczby. Czy faktycznie ten skrypt za każdym razem losuje liczbę z zakresu 1-100? Czy jednak ten zakres jest zmienny?
Z góry dzięki za odpowiedzi, jeżeli to faktycznie jest błąd to chciałbym pomóc go usunąć z gry :)

Edit:
no niestety widzę, że nikt nie odpisuje. Może wyjaśnię dokładniej o co mi chodzi.
W kodzie tym liczona jest szansa na "coś". Liczona jest ona w procentach. Powinna być więc losowana liczba od 1 do 100 i sprawdzana czy znajduje się ona w jakimś zakresie liczb.
Pytanie moje brzmi czy w tym kodzie zawsze losowana liczba jest z zakresu 1-100 czy on ulega zmianie.
Teorie swoje opieram na:

if ((int)(Math.random()*suma)<=paAtakA)

mianowicie jeżeli Math.random()*100 losuje liczbę z zakresu 1 - 100 to jeżeli zmienimy podstawioną liczbę to zmieni się również zakres z którego liczba jest losowana
Jeżeli "suma" będzie inna niż 100 to zakres będzie inny niż 1 - 100
Czy mam rację czy to jednak działa troche inaczej?

0

podbijam temat ponieważ nadal oczekuję pomocy :)

0

Skoro zarówno paObrona jak i PAtakA są większe lub równe 20 to faktycznie nie ma szans na otrzymanie pewnego 100% trafienia ani pudła ale wygląda to na celowe działanie (prawo malejących przychodów) - przy dwukrotnej przewadze nadal jest to tylko 66% szans na trafienie wobec 50% przy równych współczynnikach.

0

Dzięki wielkie za potwierdzenie :) Już dokładnie rozumiem zasadę działania skryptu.

1 użytkowników online, w tym zalogowanych: 0, gości: 1