Randomly generate a matrix of zeros and ones with a non-uniform bias
조회 수: 24 (최근 30일)
이전 댓글 표시
Can anyone help me to generate a matrix of zeros and ones randomly without uniformly distributing like the function of "randint". Instead with the number of ones must be larger than zeros in an array.
For example, a matrix like this:
A= [ 1 1 1 1 0 1 0, 1 0 1 1 1 1 1, 1 1 0 1 1 0 0]
댓글 수: 0
채택된 답변
Matt Fig
2011년 2월 11일
Like this?
A = rand(1,21)>.3 % Increase number for less ones, decrease for more.
추가 답변 (3개)
Jos (10584)
2011년 2월 11일
The following gives you a matrix with exactly a certain number of 1's
sizeR = [3 4] ;
num1 = 8 ;
R = zeros(sizeR) % set all to zero
ix = randperm(numel(R)) % randomize the linear indices
ix = ix(1:num1) % select the first
R(ix) = 1 % set the corresponding positions to 1
By the way, if the only values in R are 0 and 1 than logical arrays may be worthwhile to explore, as they are less memory consuming than double arrays.
댓글 수: 7
Nima Mahanfar
2015년 6월 17일
Thanks, this was very helpful. Is there a way to make these ones being adjacent elements? example for 6x3 matrix with two 1's: [1 1 0 0 0 0; 0 0 0 0 0 0; 0 0 0 0 0 0]
Nima Mahanfar
2015년 6월 17일
Thanks, this was very helpful. Is there a way to make these ones being adjacent elements? example for 6x3 matrix with two 1's: [1 1 0 0 0 0; 0 0 0 0 0 0; 0 0 0 0 0 0]
Walter Roberson
2011년 2월 11일
0 + (rand(7,3) > 0.4)
댓글 수: 1
Bruno Luong
2011년 2월 11일
Not that matter, but in light of the recent discussion, in order to generate a 0.4 probability of zeros, the more accurate RAND() cut is:
s = 2^(-53)
cut = 0.4*(1-s)+s/2
r = rand > cut
참고 항목
카테고리
Help Center 및 File Exchange에서 Creating and Concatenating Matrices에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!