|
clear; clc; close all;, u$ k" o: O/ W* m
n = 30;) _+ @6 m8 ]# e& `& v
Min = 2; Max = 6;
5 d. z! M( I6 X9 sM = zeros(n+1,n+1);; x9 `# z' B& f9 T
ii = 2;
' y" B5 v3 ?' @3 H2 Z1 ]while ii <= n+1( X' o" p7 B- ?
ExistingNumberOfOne = sum( M(1:1:ii-1,ii) );
+ b; Q# t/ k- H TotalNumberOfOne = randi([Min Max],1,1);
0 s2 w/ x+ p/ o+ P if TotalNumberOfOne < ExistingNumberOfOne || ExistingNumberOfOne > Max
1 i4 |" W* }. x7 V7 y+ | ii = 2;# n& y6 }# F ]7 z+ c- T
M = zeros(n+1,n+1);
/ `1 e* c/ x* ~# i' H) _ else
/ e; j4 _/ Z3 N M: j. |: [8 p, ` idx = randperm(n-ii+2,min([TotalNumberOfOne - ExistingNumberOfOne, n-ii+2]));: m. {0 D; P2 Q$ u K1 D+ d
tempArray = zeros(1,n-ii+2); tempArray(idx) = 1;* S2 C/ D) M9 A
M(ii,ii:end) = tempArray;
1 _( N3 U4 T. P" B2 t ii = ii + 1;
& w) F4 C2 u: p; a3 a! y5 l end: `7 G" C& h3 ~! J. n! X
end: ^9 k6 e$ [. S1 O
M = M(2:end,2:end);
! }1 s+ Z ?; X7 [7 ?* D5 n3 [U = triu(ones(n),1); D = diag(M);
6 ^% f# D9 |+ Q4 P4 `/ {& rM = M.*U;
; w/ C+ Z6 c" q) g. Z! O1 n' EM = M' + M + diag( D );
3 a' s. T G4 _if sum( Min<=sum(M) & sum(M)<=Max ) == n" ^: m0 m& M" Z- @7 }( ^$ _3 l
disp( M );
7 R7 ]# f5 U$ d. }& t5 Mend |
|