I randomly generated the matrix f1; where R is 8 and T is 11. In the following we have f1.
The summation of each column should have a fixed value k, for example k=4. I found the "randfixedsum" function that perfectly generates random number with fixed summation. But the elements are not zero and 1. Could you please help me to change f1 to a matrix that the summation of each column is exactly k.
f1 =
1 0 1 0 0 0 0 1 1 0 0
1 0 0 0 0 1 1 0 1 0 0
1 0 0 1 1 1 0 0 0 0 0
1 0 1 1 0 0 1 1 1 1 1
1 1 0 1 0 0 0 1 1 1 0
0 1 1 0 1 0 1 0 1 1 0
0 1 1 0 0 0 0 1 1 0 0
0 1 1 1 1 0 1 0 1 1 0

 Akzeptierte Antwort

Roger Stafford
Roger Stafford am 14 Nov. 2016

0 Stimmen

Use the ‘randperm’ function on each column of f1:
f1 = zeros(8,11)
for ix = 1:size(f1,2)
f1(randperm(size(f1,1),k),ix) = 1;
end

Weitere Antworten (1)

Walter Roberson
Walter Roberson am 14 Nov. 2016

0 Stimmen

There are multiple ways to handle this, but the easiest way is just to round() the numbers.

Kategorien

Mehr zu Random Number Generation finden Sie in Hilfe-Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by