Generating a "special" probability random matrix in efficient way

조회 수: 1 (최근 30일)
nedo nodo
nedo nodo 2012년 11월 30일
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?

답변 (1개)

Azzi Abdelmalek
Azzi Abdelmalek 2012년 11월 30일
편집: Azzi Abdelmalek 2012년 11월 30일
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

카테고리

Help CenterFile Exchange에서 Random Number Generation에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by