Generating a random binary matrix with conditions

조회 수: 3 (최근 30일)
Christy Jackson
Christy Jackson 2016년 8월 5일
댓글: Image Analyst 2016년 8월 5일
Hello
I have written the following line of code to generate a random binary matrix
Pop = round(rand(5,5))
It works fine in most cases however sometimes i get columns with all zeros, how do i avoid getting all zeros in any of the column.

채택된 답변

John D'Errico
John D'Errico 2016년 8월 5일
Just throw those columns away, if you get any like that, and replace them with new samples. WTP?
  댓글 수: 6
Christy Jackson
Christy Jackson 2016년 8월 5일
Thats true john, but i use this line of code for running in generations upto 500 and in each generation i might use a matrix of 100x100 or even more. So as the matrix size increase i tend to get more number of columns affecting my final output.
Guillaume
Guillaume 2016년 8월 5일
편집: Guillaume 2016년 8월 5일
But as the size of the matrix increases, the likelihood of getting a whole column of zero decreases (dramatically!), so John answer is even more valid.
The likelyhood of getting a whole column of zero in a 100x100 matrix is 100/2^100 ~ 1 in 1e28. In the very unlikely event that it happens, it takes microseconds to generate a new 100x100 matrix.
>> tic;randi([0 1], 100);toc
Elapsed time is 0.000363 seconds.

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

Azzi Abdelmalek
Azzi Abdelmalek 2016년 8월 5일
A=zeros(5)
[n,m]=size(A)
for k=1:m
id=randperm(n,randi(n))
A(k,id)=1
end
  댓글 수: 4
Christy Jackson
Christy Jackson 2016년 8월 5일
Thats pretty much it steven, sorry about that..!!
Image Analyst
Image Analyst 2016년 8월 5일
Are there no restrictions on the number of "true" points in the array? Or is any number of them okay? Do you specifically want 5000 in a 100x100, or do you want an average of 30% of them to be true? Or any other criteria? Whether you realize it or not, you are specifying the fraction of points, at least on average. Like doing round() will say that on average 50% of them will be true, but it doesn't have to be 50% - it can be anything you want it to be.

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Creating and Concatenating Matrices에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by