Matlab - Numeros Aleatorios

 
Vista:

Numeros Aleatorios

Publicado por Alex Sanchez (1 intervención) el 30/10/2006 23:45:53
Hola, me gustaria saber si hay alguna forma de realizar numeros aleatorios entre 0 y 1 que sumados me den 1 por ejemplo.

en una matriz de 3X3

.50 .25 .25
.35 .35 .30
.10 .10 .80

Como podran ver horizontalmente suma 1. y quisiera que esto sucediera automaticamente y de manera aleatoria, ojala alguien pueda ayudarme.

Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Numeros Aleatorios

Publicado por Patricio (7 intervenciones) el 31/10/2006 04:19:23
Hola amigo, si es que entendí bien tu problema es se resuelve de la siguiente manera, pero de lo contrario puedes escribirme para poder ver de que otra forma se puede solucionar el problema, probablemente exista una función que realice esta operación, pero personalmente no la he utilizado.

tenemos dos scripts para dos problemas diferentes:

%%%%%%%%%%%%%%%%%%%%%%%%%

script 1
%%para la suma de elementos en sus filas = 1

num=input('tamaño de la matriz aleatoria : ');
disp(' ')
h=rand(num);
suma1=sum(h');
[a,b]=size(h);
for i=1:a
j=1:b
k=suma1(i)

h(i,j)=h(i,j)/k;
end
disp('matriz aleatoria con sumas de la filas = 1'),disp(' '),
disp(h),disp('suma total elementos por fila'),disp(sum(h'))

%%%%%%%%%%%%%%%%%%%%%%%%%

script 2

%%%%%%%%%%%%%%%%%%%%%%%%%
%%para la suma de todos los elementos de la matriz = 1

num=input('tamaño de la matriz cuadrada aleatoria : ');
disp(' ')
h=rand(num);
suma1=sum(sum(h));
[a,b]=size(h);

for i=1:a;
j=1:b;
h(i,j)=h(i,j)/suma1;
end
disp(h),disp('suma total elementos de la matriz'),disp(sum(sum(h)))

%%%%%%%%%%%%%%%%%%%%%%%%%

ojalá te sirva. si lo deseas sabras que puedes cambiarlo a una función para poder utilizarlo más eficentemente,

salu2 Patricio
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Numeros Aleatorios

Publicado por XaviSC (1 intervención) el 12/03/2009 12:45:26
es mucho más sencillo, esa propiedad la tiene lo que se denomina cuadrados mágicos, me refiero a que en un "cuadrado mágico" las filas y las columnas suman lo mismo.

matlab tiene un comando para generar un cuadrado mágico X de dimensiones nxn, este comando es: X=magic(n), para que todas las filas/columnas sumen 1 lo unico que hay que hacer es normalizar la matriz, así que:

X=magic(n);
X=X/norm(X);

te devuelve una matriz nxn cuyas filas/columnas suman 1.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar