Randomly generate a matrix of zeros and ones with a non-uniform bias

37 visualizzazioni (ultimi 30 giorni)
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]

Risposta accettata

Matt Fig
Matt Fig il 11 Feb 2011
Like this?
A = rand(1,21)>.3 % Increase number for less ones, decrease for more.

Più risposte (3)

Jos (10584)
Jos (10584) il 11 Feb 2011
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 Commenti
Nima Mahanfar
Nima Mahanfar il 17 Giu 2015
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
Nima Mahanfar il 17 Giu 2015
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]

Accedi per commentare.


Walter Roberson
Walter Roberson il 11 Feb 2011
0 + (rand(7,3) > 0.4)
  1 Commento
Bruno Luong
Bruno Luong il 11 Feb 2011
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

Accedi per commentare.


Nurul
Nurul il 11 Feb 2011
Thanks for your help. Its helped me a lot.

Categorie

Scopri di più su Creating and Concatenating Matrices in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by