Pick a number from an array with a certain probability

Hi!
I have an array from 1 to 150 [1 2 3 ...]
and the corresponding probability [0.001 0.003 0.002 ...]
Now I'd like to pick a random number from the first array with taking into account the respective probability.
Has anyone an idea how to proceed?
Thanks!

 Accepted Answer

If you can use pre-defined functions and you have Statistics and Machine Learning Toolbox, then you can use randsample(): https://www.mathworks.com/help/releases/R2020a/stats/randsample.html. Something like this
pop = 1:150;
prob = % probability values 1x150
y = randsample(pop, 1000, true, prob)
If you don't have the toolbox, then try following FEX packages:

More Answers (1)

Is this homework? Sounds like it. See Wikipedia: https://en.wikipedia.org/wiki/Inverse_transform_sampling
Hint: use cumsum(probabililtyVector) and see if a random number is less than the cdf.

1 Comment

No, it's part of my thesis, and I'm working the first time with matlab, that's why it might sounded like a homework.
I've tried it with cumsum already, and with
V (v>=0 & v<0.0027)=0;
V(v>=0.0027 & v<0.0040)=1;
V(v>=0.0040 & v<0.0047)=2;...
but for so many probabilities it is too much work, especially if the probabilities might change again.
But thanks, anyway!

Sign in to comment.

Categories

Asked:

on 25 May 2020

Commented:

on 25 May 2020

Community Treasure Hunt

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

Start Hunting!