Rozważmy taki problem. Mamy dwie armie. Armia M ma M żołnierzy a armia P ma P żołnierzy. Z prawdopodobieństwem M/(P+M) ginie jeden żołnierz z armii P a z prawdopodobieństwem P(M+P) ginie jeden żołnierz z armii M. W każdej iteracji ginie dokładnie jedna osoba z armii P albo z armii M. Bitwa się kończy gdy liczebność armii M spadnie poniżej 1000 a armii P do zera. Napisałem taki kod:

bitwa=function(M,P){#zdefiniujemy próblem dla różnej liczebności wojska M-Mongole, P-Polacy
  SM=c() #stan wojsk mongolskich (w tej chwili pusty wektor)
  SP=c() #stan wojsk polskich (w tej chwili pusty wektor)
  i=0 #iteracja, zakładamy że zmiany w liczebności będą sie wykonywać po i-tej iteracji
  if(M%%1==0 & P%%1==0 && M>=1000 & P>=0){ #liczba wojsk musi byc łiczba całkowita i taka aby spełniac warunki zadania
    while(M>999 && P>0){
      pM=M/(M+P) #prawdopodobieństwo, że zginie po stronie polskije
      a=rbinom(1,1,pM)
      pP=P/(M+P)
      b=rbinom(1,1,pP) 
      if(xor(a==1,b==1)==1){
        P=P-a
        M=M-b
        i=i+1
      }
      
      else{
        i=i
      }
      
      SM[i]=M #wpisujemy stan w wosjka w wektor
      SP[i]=P
     
   
      if(i>1000000){#zabezpieczmy się przed nieskończoną bętlą
        break
      }
      next
      
    }

  }
 else{
   print("M musi być wiekszę od 1000 a P od 0. Muszą byc wartości całkowite")
 }

par(mfrow = c(1:2))
barplot(SM,main ="Wojska Mongolskie", names.arg = c(1:i), xlab ="iteracja",ylab = "stan wojska", col="green") 
barplot(SP,main ="Wojska Polskie", names.arg = c(1:i),xlab="iteracja",ylab ="stan wojska",col="red")
}
bitwa(10000,8000)

Problem w tym kodzie jest taki, iż uwzględnia że w danej iteracji może zginąć żołnierz z armii M i żołnierz z armii P lub może nie zginąć nikt. Takie warunki są niedopuszczalne. Jak to poprawić?