Info

此问题已关闭。 请重新打开它进行编辑或回答。

Regarding random generation of elements in a matrix.

1 次查看(过去 30 天)
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.

回答(2 个)

Andrei Bobrov
Andrei Bobrov 2015-2-24
编辑:Andrei Bobrov 2015-2-24
out = zeros(1,10);
out(randperm(10,2)) = 1;
or just
out = randperm(10) > 8;

Roger Stafford
Roger Stafford 2015-2-24
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

此问题已关闭。

标签

Community Treasure Hunt

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

Start Hunting!

Translated by