First make sure you run the data part 

data1=”\n”<>”textfghjkl:=”<>ToString[<| ..... so you have the data

Go the variations and cut and past the code from any of the vairations .

For example:

question=RandomChoice[textfghjkl["0"]];

(*a*)

key=RandomChoice[Keys[textfghjkl["1"]]];
text=RandomChoice[textfghjkl["1"][key]];


Which[key=="1.1", 
a=ToString@(RandomChoice@{99, 95,90,85,80,75,70,65,60});
b=ToString@N[(ToExpression@a)/100];
c=ToString@(RandomSample[Range[4,10],1][[1]]*100);
d=ToString@(ToExpression@c - RandomSample[Range[10,20]][[1]]*10);
pr=ToString@(N[ToExpression@d / ToExpression@c]);
vars={a,b,c,d,pr,r};
r={x/.NSolve[CDF[NormalDistribution[0,1],x]== (1-ToExpression@b)/2,{x}, Reals][[1]],x/.NSolve[CDF[NormalDistribution[0,1],x]==1- (1-ToExpression@b)/2,{x}, Reals][[1]]};
sol={ToExpression@pr+r[[1]]*Sqrt[ToExpression@pr*(1-ToExpression@pr)/ToExpression@c],ToExpression@pr+r[[2]]*Sqrt[ToExpression@pr*(1-ToExpression@pr)/ToExpression@c]};
(*question=StringReplace[question, { "#a"->a}];*)
parta={StringReplace[text, { "#a"->a,"#b"->b, "#c"->c,"#d"->d}],vars,sol} ;

];

Only take the middle part up to sol :

a=ToString@(RandomChoice@{99, 95,90,85,80,75,70,65,60});
b=ToString@N[(ToExpression@a)/100];
c=ToString@(RandomSample[Range[4,10],1][[1]]*100);
d=ToString@(ToExpression@c - RandomSample[Range[10,20]][[1]]*10);
pr=ToString@(N[ToExpression@d / ToExpression@c]);
vars={a,b,c,d,pr,r};
r={x/.NSolve[CDF[NormalDistribution[0,1],x]== (1-ToExpression@b)/2,{x}, Reals][[1]],x/.NSolve[CDF[NormalDistribution[0,1],x]==1- (1-ToExpression@b)/2,{x}, Reals][[1]]};
sol={ToExpression@pr+r[[1]]*Sqrt[ToExpression@pr*(1-ToExpression@pr)/ToExpression@c],ToExpression@pr+r[[2]]*Sqrt[ToExpression@pr*(1-ToExpression@pr)/ToExpression@c]};

Then go to send and take what you need:

ToExpression@libLIST; (*these have to be here *)
ToExpression@libERR;
body={a0["id"]};

μ=0;σ=1;
{canvas,vars,sol}=ReleaseHold[ToExpression[a0["q"],InputForm]];
sol1=Sort[(ToExpression@sol)[[1]],Less];

err=If[Norm[{ToExpression@(a0["x1"]),ToExpression@(a0["x2"])}-sol1]<0.01, 1, 0];

g1=Plot[PDF[NormalDistribution[μ,σ],x],{x,-3,3},Filling->Axis,PlotLabel->"Normal Distribution\n"<>"μ="<>ToString[μ]<>", σ="<>ToString[σ], PlotRange->Full,AxesOrigin->{μ,0}];
g2=Plot[PDF[NormalDistribution[μ,σ],x],{x,sol1[[1]],sol1[[2]]},Filling->Axis,PlotLabel->"Normal Distribution\n"<>"μ="<>ToString[μ]<>", σ="<>ToString[σ], PlotRange->Full,AxesOrigin->{μ,0},FillingStyle->{Red}];
g3=Plot[PDF[NormalDistribution[μ,σ],x],{x,sol1[[1]]-0.2,sol1[[2]]+0.2},Filling->Axis,PlotLabel->"Normal Distribution\n"<>"μ="<>ToString[μ]<>", σ="<>ToString[σ], PlotRange->Full,AxesOrigin->{(sol1[[1]]+sol1[[2]])/2,0}];
g4=Plot[PDF[NormalDistribution[μ,σ],x],{x,sol1[[1]],sol1[[2]]},Filling->Axis,PlotLabel->"Normal Distribution\n"<>"μ="<>ToString[μ]<>", σ="<>ToString[σ], PlotRange->Full,AxesOrigin->{(sol1[[1]]+sol1[[2]])/2,0},FillingStyle->{Red}];

Change sol1=Sort[(ToExpression@sol)[[1]],Less];   to sol1=sol  

get rid of 

{canvas,vars,sol}=ReleaseHold[ToExpression[a0[“q”],InputForm]];

get rid of 


err=If[Norm[{ToExpression@(a0[“x1”]),ToExpression@(a0[“x2”])}-sol1]<0.01, 1, 0];  

Keep this if you want to test the error you need to manually make a0 [ ]  with answer student might type.

You end up with

a=ToString@(RandomChoice@{99, 95,90,85,80,75,70,65,60});
b=ToString@N[(ToExpression@a)/100];
c=ToString@(RandomSample[Range[4,10],1][[1]]*100);
d=ToString@(ToExpression@c - RandomSample[Range[10,20]][[1]]*10);
pr=ToString@(N[ToExpression@d / ToExpression@c]);
vars={a,b,c,d,pr,r};
r={x/.NSolve[CDF[NormalDistribution[0,1],x]== (1-ToExpression@b)/2,{x}, Reals][[1]],x/.NSolve[CDF[NormalDistribution[0,1],x]==1- (1-ToExpression@b)/2,{x}, Reals][[1]]};
sol={ToExpression@pr+r[[1]]*Sqrt[ToExpression@pr*(1-ToExpression@pr)/ToExpression@c],ToExpression@pr+r[[2]]*Sqrt[ToExpression@pr*(1-ToExpression@pr)/ToExpression@c]}


sol1=sol;   (* or sol2= sol*)
μ=0;σ=1;
g1=Plot[PDF[NormalDistribution[μ,σ],x],{x,-3,3},Filling->Axis,PlotLabel->"Normal Distribution\n"<>"μ="<>ToString[μ]<>", σ="<>ToString[σ], PlotRange->Full,AxesOrigin->{μ,0}];
g2=Plot[PDF[NormalDistribution[μ,σ],x],{x,sol1[[1]],sol1[[2]]},Filling->Axis,PlotLabel->"Normal Distribution\n"<>"μ="<>ToString[μ]<>", σ="<>ToString[σ], PlotRange->Full,AxesOrigin->{μ,0},FillingStyle->{Red}];
g3=Plot[PDF[NormalDistribution[μ,σ],x],{x,sol1[[1]]-0.2,sol1[[2]]+0.2},Filling->Axis,PlotLabel->"Normal Distribution\n"<>"μ="<>ToString[μ]<>", σ="<>ToString[σ], PlotRange->Full,AxesOrigin->{(sol1[[1]]+sol1[[2]])/2,0}];
g4=Plot[PDF[NormalDistribution[μ,σ],x],{x,sol1[[1]],sol1[[2]]},Filling->Axis,PlotLabel->"Normal Distribution\n"<>"μ="<>ToString[μ]<>", σ="<>ToString[σ], PlotRange->Full,AxesOrigin->{(sol1[[1]]+sol1[[2]])/2,0},FillingStyle->{Red}];

Column@{Show[g1,g2,ImageSize->400],Show[g3,g4,ImageSize->400]}