Regarding random generation of elements in a matrix.

I have a code like this
randi([0 1],1,10)
I want it to generate random 0 and 1. But I want that it should generate at max two ones. For e.g. I should get eight zeros and two ones randomly. Please tell how to do.

Answers (2)

out = zeros(1,10);
out(randperm(10,2)) = 1;
or just
out = randperm(10) > 8;
You stated "at max two ones", Abhinav. If you want to include the cases where there are less than two 1's, you could do it this way:
A = zeros(1,10);
if rand <= 55/56
i1 = randi(10);
A(i1) = 1;
if rand <= 45/55
i2 = randi(9);
if i2 >= i1
i2 = i2 + 1;
end
A(i2) = 1;
end
end

This question is closed.

Tags

Asked:

on 24 Feb 2015

Closed:

on 20 Aug 2021

Community Treasure Hunt

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

Start Hunting!