Randomising a vector with respect to the probability of the outcome
2 views (last 30 days)
Show older comments
Marek Galus
on 13 Oct 2021
Commented: Marek Galus
on 14 Oct 2021
Hi, I have 60 trials which have two outcomes 0 and 1 with probabilities of 80% and 20%.
I want to randomise this 60x1 matrix in such a way that every 5 iterations, outcome 0 occurs 4 times and outcome 1 occurs once as they should.
I tried using ransrc but the 5x1 matrices that I get as an outcome very rarely match the desired probabilites.
2 Comments
Mitchell Thurston
on 13 Oct 2021
This isn't a general case, but if I understand what you're wanting to do this'll do the job
result = zeros(60,1);
for i = 0:5:55
result(i + randi(5)) = 1;
end
Accepted Answer
Mohammad Alhashash
on 13 Oct 2021
You can use the randperm function to build 12 basic 5-by-1 matrices and then map the values into 0 and 1 based one your probabilities.
Here what do I mean:
A = [];
m = 60; %length of the main matrix A
for i=1:5:m
a = randperm(5)';
a(a~=1) = 0; % this based on your probability, I used 20% 1 and 80% 0
A = [A;a];
end
See Also
Categories
Find more on Random Number Generation in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!