Olá! Estou tendo problemas no gerador de números aleatórios, por algum motivo não está funcionando.
Estou usando a técnica de Monte Carlo em Matlab 64bits. O resultado é usado para montar curvas de random walk simples.
Com o rand() funciona, e o gráfico fica certo. Mas a ideia é criar o gerador. Imagino que o problema esteja nos números do A, B e M do parâmetro, mas não sei como resolver.
Alguém poderia me ajudar? Não tenho costume de usar o Matlab.
Esse é o programa principal:
clear all
clc
sem = 123456789;
i=0;
while i < 10
tempo=0;
posicao=0;
total=10000;
while (tempo < total)
a=aleat(sem);
sem = a;
if a > 0.5
passo = 1;
else
passo = -1;
end
tempo = tempo + 1;
posicao = posicao + passo;
Vetorposicao(tempo)= posicao;
Vetortempo(tempo)= tempo;
end
plot(Vetortempo,Vetorposicao)
hold on
clear Vetortempo
clear Vetorposicao
i=i+1;
end
Essa é a função aleat() para gerar números aleatórios entre 0 e 1.
function [xx] = aleat(sem1)
M = 2^62;
A = 13^13;
B = 44485709377909;
aux = 0.5/(1.0*M);
sem1 = sem1*A + B;
if sem1 < 0
sem1 = (sem1 + M) + M;
end
xx = 1.0*aux*sem1;
end