function [med, var]=brownie2 ()

% Movimento browniano:
% dizemos que a trajetoria da variavel aleatoria X
% e' um movimento browniano quando:
% dado x(0),
% x(i+1)=x(i)*(1+u) com probabilidade pu;
% x(i+1)=x(i)*(1-d) com probabilidade pd;
% x(i+1)=x(i) com probabilidade 1-pu-pd.
% u, d > 0.

% No programa vamos decidir se X sobe desce ou fica na
% mesma baseados em uma variavel aleatoria r com distri-
% buicao uniforme no intervalo [0,1]:

%              pu               pd              1-pu-pd
%        |<------------>|<------------------>|<--------->|
%r:      0--------------|--------------------|-----------1
%        |     pu       |                    |
%        |------------->|                    |
%			|              pu+pd                |
%			|---------------------------------->|

%			se 0<=r<=pu entao X sobe
%			se pu<r<=(pu+pd) entao X desce
%			caso contrario, X fica na mesma.
% Neste programa estamos considerando pd=1-pu e d=u=ud.

MMAX=7;
NMAX=10;
pu=0.5;
pd=1-pu;
ud=0.1;
med=0.0;
var=0.0;
rand;
x=zeros (MMAX, NMAX);
x(:, 1)=ones(MMAX, 1);
for j=1:MMAX                     % trajetorias 
   for i=2:NMAX                  % passos 
      r=rand(1, 1);
      x(j, i)=x(j, i-1)*(1+sign(r-pd)*ud);
   end
   med=med + x(j, NMAX);
   var=var + x(j, NMAX)*x(j, NMAX);
end
med=med/MMAX;
var=var/MMAX-(med*med);

plot([1:NMAX], x);

