|
|
clear; clc; close all;5 G+ d/ a6 q( ]. X4 q* y
n = 30;# ^$ F! K C7 o& [" g- o4 i' c) P
Min = 2; Max = 6;" i$ Y" }) u& ]$ Q+ l
M = zeros(n+1,n+1);
h! ?9 ?. D! k& g* \ii = 2;
2 C; o9 |1 z" g4 B8 v1 c0 l) H2 awhile ii <= n+1
- J5 K4 H( _$ o/ u. u% u% U ExistingNumberOfOne = sum( M(1:1:ii-1,ii) );2 F" B& y! `: `' C& r$ Y, |" ^+ C8 y
TotalNumberOfOne = randi([Min Max],1,1);. I5 i. ?8 C5 n% C3 j# g( u V
if TotalNumberOfOne < ExistingNumberOfOne || ExistingNumberOfOne > Max: n- d' f$ W) H# M/ U- n
ii = 2;5 [8 b3 p& g# k7 o, H, d4 v4 m7 t
M = zeros(n+1,n+1);! f' b1 n" C" O' B
else
8 k/ H* l% e* p- _) p idx = randperm(n-ii+2,min([TotalNumberOfOne - ExistingNumberOfOne, n-ii+2]));
6 F: p$ e2 t9 f tempArray = zeros(1,n-ii+2); tempArray(idx) = 1;
; K* q* ~( K: |" ]9 J+ Q M(ii,ii:end) = tempArray;7 N& `3 ~! X1 V3 @$ A
ii = ii + 1;; f! C+ w5 c) [- W! D7 _
end8 ~3 z0 K; z. y& J2 Z* P; ~
end
. P6 c; `/ B" n/ lM = M(2:end,2:end);) Y1 E8 G- ]" O% |
U = triu(ones(n),1); D = diag(M);
l* w( O0 m2 v0 UM = M.*U;
0 c" \4 w1 [6 w' f* l. R2 J! ^. MM = M' + M + diag( D );
; f+ ^# I8 K9 |9 c) }; Mif sum( Min<=sum(M) & sum(M)<=Max ) == n
/ g: S0 e: m* ^4 [; ^4 _0 e8 D7 `% T# ` disp( M );' _/ A7 E( A V' v6 F/ W- l: j
end |
|