Step 1:
Let\'s say that I want to generate discrete uniform random numbers taking the value -1 or 1. So in other words I want to generate numbers having
That's essentially a binomial distribution (see Matlab's binornd), only scaled and shifted because the underlying values are given by DV
instead of being 0
and 1
:
n = 100;
DV = [-1 1];
p = .5; % probability of DV(2)
M = 10;
SDUD = (DV(2)-DV(1))*binornd(n, p, M, 1)+DV(1)*n;
What you have is a multinomial distribution (see Matlab's mnrnd):
n = 100;
DV = [-2 -1 0 1 2];
p = [.1 .2 .3 .3 .1]; % probability of each value. Sum 1, same size as DV
M = 10;
SDUD = sum(bsxfun(@times, DV, mnrnd(n, p, M)), 2);