random matrix with fix summation

1 visualización (últimos 30 días)
fatema saba
fatema saba el 15 de En. de 2015
Editada: Adam el 15 de En. de 2015
Hello
please.
this is my simple code that create (3*3) random matrix that all elements are 0 or 1.
a=randi([0,1],[500,500])
but is there any way that I define the number of elements that are 1. for example number of elements that are 1 be 7000 or in other word summation of matrix "a" be 7000
Thank you.

Respuesta aceptada

Matt J
Matt J el 15 de En. de 2015
Editada: Matt J el 15 de En. de 2015
For older versions of MATLAB without the randperm(n,k) syntax enabled,
n=500^2;
m=7000;
idx=randperm(n);
z=[ones(1,m), zeros(1,n-m)];
a=reshape(z(idx),500,500);
  1 comentario
fatema saba
fatema saba el 15 de En. de 2015
Thank you Matt and Adam. it is splendid

Iniciar sesión para comentar.

Más respuestas (1)

Adam
Adam el 15 de En. de 2015
Editada: Adam el 15 de En. de 2015
You can just create 7000 random indices instead and place the 1s at those indices
e.g. if you have a [500,500] matrix you have 250000 indices so create 7000 random indices from 1 to 250000 and then just assign 1s to all those indices of a 500 x 500 matrix.
  2 comentarios
Mohammad Abouali
Mohammad Abouali el 15 de En. de 2015
just change "... so create 70 random indices ..." to "... so create 7000 random indices ..."
Matt J
Matt J el 15 de En. de 2015
Editada: Matt J el 15 de En. de 2015
+1. This is really the way to go with a current MATLAB version.

Iniciar sesión para comentar.

Categorías

Más información sobre Creating and Concatenating Matrices en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by