|
|
clear; clc; close all;$ m- c2 o3 G- Y" i7 ~+ e
n = 30;
" m, [+ }5 O$ h9 e7 u) \2 }Min = 2; Max = 6;
! j0 l! b- s7 h- L u( c" Z1 fM = zeros(n+1,n+1);
( M y E4 Y. C8 z5 O5 \) E" gii = 2;
6 k8 p1 [" g8 ]while ii <= n+1
/ y# b {3 X. L5 h6 P* D% D4 U7 I ExistingNumberOfOne = sum( M(1:1:ii-1,ii) );
( e% X/ [( v/ B# ~- m( D TotalNumberOfOne = randi([Min Max],1,1);0 ?' ?+ b2 R- H; e$ V6 H
if TotalNumberOfOne < ExistingNumberOfOne || ExistingNumberOfOne > Max$ J- Y4 R+ g1 \& n, E/ i5 Z0 h
ii = 2;$ w0 U# o, w7 `- A7 y) @' _
M = zeros(n+1,n+1);
% Y5 L7 f, r2 ^" N* Q else( r" A+ C# H3 Y& D H$ Q/ E
idx = randperm(n-ii+2,min([TotalNumberOfOne - ExistingNumberOfOne, n-ii+2]));
. w$ G1 z. R/ M$ r v. u tempArray = zeros(1,n-ii+2); tempArray(idx) = 1;" D$ X3 n1 T# [7 `/ h" S8 }
M(ii,ii:end) = tempArray;
, P0 z/ ]0 G1 t ii = ii + 1;, N4 L* f' ]5 r N
end6 d& Z1 B2 p* O/ v% V
end
( v9 Y% l# O& ?7 E4 R- x9 |M = M(2:end,2:end);
; D# H) ~6 }7 m% e* N5 hU = triu(ones(n),1); D = diag(M);
) X; W7 S* w" e S( v7 X9 A* ]2 dM = M.*U;2 k0 S. D* {5 h4 |% j
M = M' + M + diag( D );
0 }4 f# F5 O, U9 ~$ yif sum( Min<=sum(M) & sum(M)<=Max ) == n' d% O8 v5 J9 Y9 ?7 |
disp( M );
; o; \: v/ O2 F( P; m9 Bend |
|