How to generate a number representing the sum of a discrete uniform distribution

前端 未结 2 441
感动是毒
感动是毒 2021-01-21 03:10

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

相关标签:
2条回答
  • 2021-01-21 03:11

    In general the sum of independent variables has pdf equal to the convolution of the pdfs of the summand variables. When the variables are discrete, the convolution is very conveniently computed via the Matlab function conv (which probably calls fft for a fast, exact calculation).

    When the pdf's are uniform, then the result of the convolution is a binomial or multinomial pdf. But the convolution stuff applies for non-uniform pdfs as well.

    0 讨论(0)
  • 2021-01-21 03:32

    For two values

    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;
    

    For an arbitrary number of values

    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);
    
    0 讨论(0)
提交回复
热议问题