# Generating Pseudo Random Numbers in MATLAB

I wrote the code found in this post in the Student Version of MATLAB R2009a (7.8.0.347) on Windows Vista SP2.

```function U = js_randv(i, x)
%js_randv Pseudo Random Number Vector Generator
% Returns a pseudo random number vector
% according to congruential random number generator
%   i = length of vector
%   x = seed value of sequence
%   U = vector of Xi+1 = (a * Xi) mod m

isFirst = 0;

a = 16807;          % 7^5 predetermined multiplicative value
m = 2147483647;     % 2^31-1 predetermined prime number
r = 2836;           % m div a
q = 127773;         % m mod a
T = zeros(1, i);    % holds seed values
U = zeros(1, i);    % holds returned uniform random numbers in (0,1)

% loop through all indices of vector
for j=1:i
% if this is the first value, use seed
if isFirst == 0
seed = (a * mod(x, q)) - (r * (x / q));
T(1, j) = seed;
isFirst = 1;
% if this is not the first value, use current index
else
previousValue = T(1, j-1);
seed = (a * mod(previousValue, q)) - (r * (previousValue / q));
T(1, j) = seed;
end

U(1, j) = seed / m;
end
end
```

This function will return a vector of size i containing randomly generated numbers uniformly distributed between 0 and 1. It’s not perfect, but it got the job done. I’ll get around to explaining it more beyond the meager comments another time.

1. RyuAran

Hi!

My name is Anna and I want to thank you for posting this code, I need to modify the code for a project digital image processing, where I need a pseudo random noise sequence and researching I came to this was reduced to generate a sequence of random numbers . The particularity of the noise I create is that I should only have values between -1, 0 and 1 and then there’s my mission. Thank you very much again!

Sorry for my bad English 😛

2. jskiles1

Hi Anna. What type of distribution are you trying to generate these numbers under? Uniform, random, etc. See: http://www.mathworks.com/access/helpdesk/help/techdoc/ref/rand.html for an easy way to generate matrices of uniformly distributed numbers and http://www.mathworks.com/access/helpdesk/help/techdoc/ref/randn.html for normally distributed numbers.

My method of generating random numbers is a bit cumbersome, but seemed to work for my application. It may not work for yours. Good luck!

3. 