Mam do przerobienia kod pythona do js jest prawie wszystko gotowe ale nie mogę się doszukać gdzie błąd robię przy zliczaniu "średniej długości kolejki" wiem tylko że suma często na minusie mi się zwraca. Na dzisiaj mi jest potrzebne przed 23:00 sad.gif .
kod pythona
Kod
from random import *
import random

T=1000 #input("Podaj długość symulacji: ");
p=0.1 #input("Podaj prawdopodobieństwo przyjścia pakietu: ");
K=5 #input("Podaj pojemność urządzenia: ");
m=3 #input("Podaj czas obsługi pakietu: ");
N=100 #input("Podaj liczbę powtórzeń: ");

tab=[0 for k in range(K)]
utraconePakiety=0
wszystkiePakiety=0
suma=0
buf=0
m1=m
s=0


wykorzystanie=0

for i in range(N):
    for j in range(T):
        if random.random()<=p:          
            wszystkiePakiety=wszystkiePakiety+1
            if buf<K:
                buf=buf+1
                tab[s]=9
                s=s+1
                
            elif buf>=K:
                utraconePakiety=utraconePakiety+1
            
                
        if tab[0]==9:
            wykorzystanie=wykorzystanie+1
            m1=m1-1
            if m1==0:
                m1=m
                buf=buf-1
                for l in range (K):
                    if buf==0:
                        tab[0]=0
                    elif l<buf:
                        tab[l]=tab[l+1]
                    
                s=s-1

        suma=suma+buf
        float(suma)
    for s in range(K):
        tab[s]=0
    s=0
    buf=0
    m1=m

c=N*T
float(c)
dl=0
dl=float(suma/float(c))
wyk=float(100*wykorzystanie/float(c))
utr=float(100*utraconePakiety/float(wszystkiePakiety))

print "Utracone: ",utraconePakiety
print "Wszystkie: ",wszystkiePakiety
print "Szansa utraty: ",utr,"%"
print "Średnia długość kolejki: ",dl
print "Wykorzystanie urządzenia: ",wyk,"%"


kod js
Kod
var T = 1000;
var p = 0.1;
var K = 5;
var miz = 3;
var N = 100;
var array = new Array(K);
for(var i = 0; i < K; i++)
{
array[i]=0;
}

var lostPakiet=0,allPakiet=0, suma=0, zmienna=0, miz1=miz, g=0, used=0;

for (var i = 0; i<N; i++)
{
    for(var j = 0; j<T; j++)
    {
        
        if(Math.random() <= p)
        {
        allPakiet=allPakiet+1;
            if(zmienna < K)
            {
                zmienna=zmienna+1;
                array[g]=9;
                g=g+1;
            }
            else if(zmienna>=K)
            {
                lostPakiet=lostPakiet+1;
            }
        }
        if(array[0]==9){
            used=used+1;
            miz1=miz1-1;
            if (miz1==0){
                miz1=miz;
                zmienna=zmienna-1;
                for(var z = 0; z<K; z++)
                {
                    if (zmienna==0)
                    {
                        array[0]=0;
                    }
                    else if (z<zmienna)
                    {
                        array[z]=array[z+1];
                    }
                }    
                g=g-1;
            }
        }
        var suma=suma+zmienna;
    }
    for(g; g<K;g++)
    {
        array[g]=0;
    }
    g=0;
    zmienna=0;
    miz1=miz;
}

var c=N*T;

var dl=suma/c;
var wyk=100*used/c;
var utr=100*lostPakiet/allPakiet;

document.getElementById('wynik').innerHTML = "Utracone: "+lostPakiet+
"\nWszystkie: "+allPakiet+
"\nSzansa utraty: "+utr+
"% \nWykorzystanie urządzenia: "+wyk+
"% \nŚrednia długość kolejki: "+dl;



[edit]
dobra nie trzeba już, ślepy jak kret jestem żeby tej linijki nie zauważyć for(g; g<K;g++), g=0 dopisać musiałem smile.gif