Producing random numbers in Matlab?

How can I produce random binary numbers with exact number of zeros or ones? for example:
[0 1 0 1 0 1 0 0 1 0] ===> number of ones are 4,
[1 1 0 0 1 0 0 1 0 0] ===> again number of ones are 4,
[1 0 0 1 0 0 0 0 0 1] ===> number of ones are 3, which is not allowed.
I just want exact number of ones in output of random sets.

更多回答(3 个)

x=zeros(10);
[y,idx]=datasample(1:10,4,'Replace',false);
x(idx)=1;
Best wishes
Torsten.
david O
david O 2015-7-24
编辑:david O 2015-7-24
x=zeros(10,1,1);
for i=1:4
x(randi(10))=1;
end

2 个评论

With randi, you can get the same number more then once

请先登录,再进行评论。

Using rand
n=4
m=6
a=[ones(1,n), zeros(1,m)]
[~,idx]=sort(rand(1,m+n))
out=a(idx)

类别

帮助中心File Exchange 中查找有关 Random Number Generation 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by