(* Require XMLgen_MC.nb ver >=0.04 *)
SetDirectory[NotebookDirectory[]];
<<XMLgenMC.mx;
TTS[mt_]:=ToString[TeXForm[StandardForm[mt]]];
TOT[mt_]:=ToString[OneLineTeXForm[mt]];
TOTT[mt_]:=ToString[OneLineTeXForm[Transpose[mt]]];
TOC[mt_,c_]:=TOTT[{Transpose[mt][[c]]}];
TTD[r_]:=StringReplace[TT[r],"\\frac"->"\\dfrac"];
Rnz[m_]:=(RandomInteger[m]+1)*(2*RandomInteger[1]-1); (* \\pm 1,\pm2,...,\pm(m+1) *)
Rpos[m_]:=RandomInteger[m]+1; (* 1,2,...,m+1 *)
Rbtw[m_]:=RandomInteger[2m]-m;
TTC[A_,n_]:=TOTT[{(Transpose[A])[[n]]}];
Col[A_,n_]:=Transpose[{A[[Range[Length[A]],n]]}];
ColCat[CL_]:=Join@@@(Transpose@CL);
PtString[M_]:=StringReplace[ToString[M],{"{"->"(","}"->")"}];
Title="行列の定義・サイズ(型)";
SELNUM=5;NUM=200;

(* Select matrices satisfying some mapping conditions *)
QtList={}; For[ct=1,ct≤1000,ct++,
Nr=Rpos[3]+1;Nc=Rpos[3]+1;
While[Nc==Nr,Nc=Rpos[3]+1];
QtList=Append[QtList,{RandomInteger[2]+1,{Nr,Nc}}];
(* QtList=DeleteDuplicates[QtList]; *)
];QtList=RandomSample[QtList,NUM];Length[QtList]

QtextF[mm_]:=Module[{Cn,Nr,Nc},{Cn,{Nr,Nc}}=QtList[[mm]];
Return["次の行列の中でサイズ(型)が\\("<>TOT[Nr]<>"\\times "<>TOT[Nc]<>"\\)となるものをすべて選べ"]];

CListF[mm_]:=Module[{Cn,Nr,Nc,M,fs,ret={}},
{Cn,{Nr,Nc}}=QtList[[mm]];fs="正解です.";
M=Table[Table[RandomInteger[i+j],{j,1,Nc}],{i,1,Nr}];
ret=Append[ret,{"\\("<>TOT[M]<>"\\)",fs}];
M=Table[Table[i-j,{j,1,Nc}],{i,1,Nr}];
ret=Append[ret,{"\\("<>TOT[M]<>"\\)",fs}];
M=Table[Table[(i-1)*(j-1),{j,1,Nc}],{i,1,Nr}];
ret=Append[ret,{"\\("<>TOT[M]<>"\\)",fs}];
Return[RandomSample[ret,Cn]]];

ICListF[mm_]:=Module[{Cn,Xc,Xr,fs1,fs2,fs3,fs4,Nc,Nr,MM,ret={}},{Cn,{Nr,Nc}}=QtList[[mm]];
Xr=Nr+Rnz[3];While[Xr<2,Xr=Nr+Rnz[3]];
Xc=Nc+Rnz[3];While[Xc<2,Xc=Nc+Rnz[3]];
fs1="行の数はあっていますのが列の数が異なります.";
fs2="列の数はあっていますのが行の数が異なります.";
fs3="行と列が逆です.";
fs4="行の数, 列の数ともに一致しません.";
MM=Table[Table[Rnz[2],{j,1,Xc}],{i,1,Nr}];
ret=Append[ret,{"\\("<>TOT[MM]<>"\\)",fs1}];
MM=Table[Table[Rnz[2],{j,1,Nc}],{i,1,Xr}];
ret=Append[ret,{"\\("<>TOT[MM]<>"\\)",fs2}];
MM=Table[Table[Rnz[2],{j,1,Nr}],{i,1,Nc}];
ret=Append[ret,{"\\("<>TOT[MM]<>"\\)",fs3}];
MM=Table[Table[Rnz[2],{j,1,Nr}],{i,1,Nc}];
ret=Append[ret,{"\\("<>TOT[MM]<>"\\)",fs3}];
If[{Nr,Nc}≠{Xc,Xr},
MM=Table[Table[Rnz[2],{j,1,Xc}],{i,1,Xr}];
ret=Append[ret,{"\\("<>TOT[MM]<>"\\)",fs4}],
MM=Table[Table[Abs[i-j],{j,1,Nr}],{i,1,Nc}];
ret=Append[ret,{"\\("<>TOT[MM]<>"\\)",fs3}]];
Return[RandomSample[ret,SELNUM-Cn]]];

GenerateMCxml[DFname[],"LA/11-01."<>Title<>"(MC1)",Title,NUM,"false",QtextF,CListF,ICListF]

ICListF[5]