Random but equal distribution of numbers 1 and 2

27 views (last 30 days)
Happy Bear
Happy Bear on 30 Jan 2020
Commented: Happy Bear on 1 Feb 2020
I need to get some kind of matrix or array with the numbers 1 and 2 randomly distributed, but I need the number of "ones" to be the same as the number of "twos".
Therefore, I applied the randsrc function, with 50% probability for number 1 and 50% probability for number 2.
However, when I run this, sometimes I do get what I want ([1,2,2,1] or [2,1,2,1], e.g.) but many times it is wrong (e.g., [1,1,1,2] or [2,2,2,2]).
The size doesn't necessarily need to be 1x4, I'm doing that for now but it will be 1x50 once I get it to work.
Anyone knows why this is not working, what am I doing wrong or has any other idea for how to do this?
a = randsrc(1,4,[1 2;0.5 0.5]);

Accepted Answer

Steven Lord
Steven Lord on 30 Jan 2020
Do you need exactly equal numbers of 1's and 2's or just a vector where each element has an equal probability of being 1 or 2?
If the latter, you could use randi or randsrc.
If the former, start off with a vector with an equal number of 1's and 2's and shuffle it with randperm.
n = 10;
v = [ones(n, 1); 2*ones(n, 1)];
vshuffle = v(randperm(2*n));
% Display them side by side
[v, vshuffle]

More Answers (1)

Mohammad Sami
Mohammad Sami on 30 Jan 2020
You can try this
l = 50
a = rand(l,1);
a = (a > median(a)) + 1;

Community Treasure Hunt

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

Start Hunting!