Generating a "special" probability random matrix in efficient way
1 visualizzazione (ultimi 30 giorni)
Mostra commenti meno recenti
Hi,
I would to generate a probability random matrix with two constraints: the first is that the sum of the values of the row must be equal to 1 and the second is that one element of each row has to be a value greater than 0.5. I have written this:
if true
for l=1:n
while (nnz(random_data(l,:)) < d)
m=randi(d,1,1);
if (random_data(l,m)==0)
row_sum=sum(random_data(l,:));
if(row_sum == 0)
random_data(l,m)=0.5+0.5*rand(1,1);
else
if(nnz(random_data(l,:))==(d-1))
random_data(l,m)=1-row_sum;
else
random_data(l,m)=(1-row_sum)*rand(1,1);
end
end
end
end
end
end
It is very inefficient. Can you help me?
0 Commenti
Risposte (1)
Azzi Abdelmalek
il 30 Nov 2012
Modificato: Azzi Abdelmalek
il 30 Nov 2012
try this
n=10,m=12;
x=rand(n,m)/m;
[~,id1]=max(x');
id2=m+1-id1;
for k=1:n
x(k,id1(k))=0.5;
x(k,id2(k))=1-sum(x(k,:))+x(k,id2(k))
end
0 Commenti
Vedere anche
Categorie
Scopri di più su Random Number Generation 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!