# Definiowanie parametrów Uwaga kod jest pisany na kolenie wiec lepiej zawsze przed odpaleniem
# sim na nowo zdefiniowac zmienne
liczba_rowerow_na_stacji = [10,10,10,10,10]
brak_roweru = [0,0,0,0,0]
overrun=[0,0,0,0,0]
popyt_stacji = [0.3, 0.3, 0.2, 0.1, 0.1]
prawdopodobienstwo_stacji=[
          0.05 0.45 0.3 0.1 0.1;
          0.43 0.07 0.1 0.2 0.2;
          0.34 0.2 0.06 0.2 0.2;
          0.2 0.2 0.2 0.05 0.35;
          0.1 0.1 0.1 0.67 0.03]
wynik_sim_init = [liczba_rowerow_na_stacji,brak_roweru,overrun]


# Pojedyncze wyporzyczenie i oddanie roweru
function single_sim(wynik_sim=wynik_sim_init,
                    prawdopodobienstwo_stacji= prawdopodobienstwo_stacji,
                    popyt_stacji=popyt_stacji)
    stacja_odebrania = rand(Categorical(popyt_stacji))
    stacja_oddania = rand(Categorical(prawdopodobienstwo_stacji[stacja_odebrania,:]))
    if wynik_sim[1][stacja_odebrania] >= 1
        wynik_sim[1][stacja_odebrania] -= 1
        wynik_sim[1][stacja_oddania] += 1
        if wynik_sim[1][stacja_oddania]>=15
            wynik_sim[3][stacja_oddania] +=1
            wynik_sim[1][stacja_oddania] -=3
            wynik_sim[1][argmin(wynik_sim[1])] +=3
        end
    else
        wynik_sim[2][stacja_odebrania] += 1
    end
    return wynik_sim
end

# x razy single_sim
function run_day(liczba_dzienna,
                    wynik_sim = wynik_sim_init,
                    prawdopodobienstwo_stacji=prawdopodobienstwo_stacji)
    wynik_sim_init = deepcopy(wynik_sim)
    for i in range(1,liczba_dzienna)
        wynik_sim = single_sim(wynik_sim_init, prawdopodobienstwo_stacji, popyt_stacji)
    end
    return wynik_sim
end

# x razy single_sim, ale zapamietuje wyniki z konca symulacji
function run_day_cum(liczba_dzienna,
                    wynik_sim = wynik_sim_init,
                    prawdopodobienstwo_stacji=prawdopodobienstwo_stacji)
    for i in range(1,liczba_dzienna)
        wynik_sim = single_sim(wynik_sim, prawdopodobienstwo_stacji, popyt_stacji)
    end
    return wynik_sim
end

# x razy single_sim, ale kazdy "dzien" liczony od nowa
function run_sims(liczba_sim = 30,
                    liczba_dzienna = 40,
                    wynik_sim = wynik_sim_init,
                    prawdopodobienstwo_stacji = prawdopodobienstwo_stacji)
    wynik_sim_init = deepcopy(wynik_sim)
    wyniki_okresu = DataFrame(dzien = Int[], nr_stacji = Int[], liczba_na_koniec_dnia = Int[], braki_na_koniec_dnia = Int[], przewoz=Int[])
    for i in range(1,liczba_sim)
        wynik_dnia = run_day(liczba_dzienna, wynik_sim, prawdopodobienstwo_stacji)
        temp_df = DataFrame(dzien = [i,i,i,i,i], nr_stacji = repeat(1:5,1),liczba_na_koniec_dnia = wynik_dnia[1], braki_na_koniec_dnia = wynik_dnia[2],przewoz=wynik_dnia[3])
        wyniki_okresu = vcat(wyniki_okresu, temp_df)
        wynik_sim = wynik_sim_init
    end
    wynik_sim = wynik_sim_init
    return wyniki_okresu
end

# x razy single_sim, ale dni są "połączone" ze sobą
function run_sims_cum(liczba_sim = 30,
                    liczba_dzienna = 40,
                    wynik_sim = wynik_sim_init,
                    prawdopodobienstwo_stacji = prawdopodobienstwo_stacji)
    wyniki_okresu = DataFrame(dzien = Int[], nr_stacji = Int[], liczba_na_koniec_dnia = Int[], braki_na_koniec_dnia = Int[],przewoz=Int[])
    for i in range(1,liczba_sim)
        wynik_dnia = run_day_cum(liczba_dzienna, wynik_sim_init, prawdopodobienstwo_stacji)
        temp_df = DataFrame(dzien = [i,i,i,i,i], nr_stacji = repeat(1:5,1),liczba_na_koniec_dnia = wynik_dnia[1], braki_na_koniec_dnia = wynik_dnia[2],przewoz=wynik_dnia[3])
        wyniki_okresu = vcat(wyniki_okresu, temp_df)
    end
    wynik_sim = wynik_sim_init
    return wyniki_okresu
end


# Wyniki nieskumulowanych wyników
liczba_rowerow_na_stacji = [10,10,10,10,10]
brak_roweru = [0,0,0,0,0]
overrun=[0,0,0,0,0]
popyt_stacji = [0.3, 0.3, 0.2, 0.1, 0.1]
prawdopodobienstwo_stacji=[
          0.05 0.45 0.3 0.1 0.1;
          0.43 0.07 0.1 0.2 0.2;
          0.34 0.2 0.06 0.2 0.2;
          0.2 0.2 0.2 0.05 0.35;
          0.1 0.1 0.1 0.67 0.03]
wynik_sim_init = [deepcopy(liczba_rowerow_na_stacji), deepcopy(brak_roweru),deepcopy(overrun)]
wyniki_okresu = run_sims()

In the above Julia simulation I think there is a key element missing: time. How to add time to those events and remeber that multiple bikes can travel at the same time. Write code if possible.