|
|
clear; clc; close all;, a$ I5 ]9 W3 o( ^
n = 30;& h* g% |8 s3 |# K' X4 o
Min = 2; Max = 6;
1 G- k% z4 z8 g, G- uM = zeros(n+1,n+1);4 G8 I3 T0 f4 @$ i) ?
ii = 2;& a5 \6 l/ D+ S% ?4 j
while ii <= n+1; m4 r+ `0 T1 M& ]7 N8 l- c
ExistingNumberOfOne = sum( M(1:1:ii-1,ii) );
6 C/ e' D1 ?* i TotalNumberOfOne = randi([Min Max],1,1);
4 P* d' O+ f+ p' W# S2 d8 s if TotalNumberOfOne < ExistingNumberOfOne || ExistingNumberOfOne > Max
" }+ Z+ Q1 v' f3 O+ s8 H ii = 2;
& _/ n+ C$ \5 _" z; Y M = zeros(n+1,n+1);; o( j1 P5 z& @
else0 V( P3 J- X0 _: u
idx = randperm(n-ii+2,min([TotalNumberOfOne - ExistingNumberOfOne, n-ii+2]));- K4 j0 A( F3 G& w; X
tempArray = zeros(1,n-ii+2); tempArray(idx) = 1;6 E k' `$ G, E& L
M(ii,ii:end) = tempArray;
; a2 E/ n8 u1 {! ?- N ii = ii + 1;4 x. T4 c b. f7 u4 ] w
end
. q& v3 S4 @- B8 \( Eend
$ `7 b9 X3 p. w6 j: g2 c; QM = M(2:end,2:end);
& l: S. Y7 q5 z3 J+ jU = triu(ones(n),1); D = diag(M);
$ w" g# D! K3 d+ |) Z, ~1 U, }M = M.*U;3 ?0 K" ^8 _- @) e* _, | o/ B+ g
M = M' + M + diag( D );
4 A! I- B9 x* J' zif sum( Min<=sum(M) & sum(M)<=Max ) == n
! n+ n4 ^! Y4 Q+ _' d disp( M );# V2 I1 V2 Y: T# c
end |
|