|
|
clear; clc; close all;$ a2 E. I% E' I% n9 O: v
n = 30;. q8 u+ L! v! I5 A4 ~2 Y0 `
Min = 2; Max = 6;& E6 w& G/ M3 ]# v9 F! a1 Z
M = zeros(n+1,n+1);
) ?, r/ H3 X& o2 u8 h# d. @. ?+ oii = 2;
( D' C6 a1 G" m) u. M+ Q* Qwhile ii <= n+1
& N0 u1 |' j" d ExistingNumberOfOne = sum( M(1:1:ii-1,ii) );; }' @4 z0 V) V. r0 A) p( F8 w% p
TotalNumberOfOne = randi([Min Max],1,1);
7 s8 G `/ d; l8 Q if TotalNumberOfOne < ExistingNumberOfOne || ExistingNumberOfOne > Max2 I. \+ f* G. z6 ]2 l y( K" ^
ii = 2;
, z* g6 [6 T1 `! O. W: P M = zeros(n+1,n+1);" g, X8 l4 A% E) I9 h
else
5 K- v* B" R; S5 |7 e( {5 n idx = randperm(n-ii+2,min([TotalNumberOfOne - ExistingNumberOfOne, n-ii+2]));% d# U1 a1 c6 ~$ W7 Y
tempArray = zeros(1,n-ii+2); tempArray(idx) = 1;
' C$ }" X: t+ V8 i. o M(ii,ii:end) = tempArray;
/ r4 E5 @. m" H* ^" ] ii = ii + 1;
+ p4 I3 S- a% B end
. e- h- E8 A/ I6 O( o/ rend
6 i8 T4 R, M$ N; t1 L6 m% H( mM = M(2:end,2:end);( r1 D; Z2 j. l( l. |: I' z" x
U = triu(ones(n),1); D = diag(M);2 }+ J4 O: Z- a: ^4 P' Y5 Z
M = M.*U;1 C2 {/ K# N! U3 e
M = M' + M + diag( D );
. |* b+ i1 A! m: tif sum( Min<=sum(M) & sum(M)<=Max ) == n
/ v) t0 v( x' l* n5 Q/ g disp( M );
: V: ]6 |1 U! ^' G% f! h5 F2 x! Pend |
|