I'm trying to generate random numbers between zero and 1 using fix(clock) but I'm having difficulties, each time I run the program I get the same numbers. Can someone please help?

1 Ansicht (letzte 30 Tage)
MinSec=fix(clock);
seed=100*MinSec(5)+MinSec(6);
D=seed;
a=777;
b=1444;
c=6666;
k=1:55;
D(k)=(a*D+b)*mod(c,k);
D_max=max(D(k));
R(k)=D(k)/D_max;
It was recommended that I use a while loop but I only generated one number with that.

Akzeptierte Antwort

Azzi Abdelmalek
Azzi Abdelmalek am 3 Mär. 2013
Because mod(c,k) is a constant vector and a*D+b is a variable scalar
k*v/max(k*v)=k*v/(k*max(v))=v/max(v) which is a constant because v is a constant

Weitere Antworten (2)

Marco
Marco am 3 Mär. 2013
thank you for your response, it works better than before. The numbers still express a pattern but their not the same as before.

Marco
Marco am 3 Mär. 2013
I made one correction. Because k is still small compared to seed, I changed it to mod(seed,50*k). The results are uniform.

Kategorien

Mehr zu Random Number Generation finden Sie in Help Center und File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by