(*CLT example with Discrete Uniform Distribution*)

diceDistL[1]=Table[1/6,{i,1,6}]

Do[diceDistL[n]=Table[Sum[If[1≤k-i≤6(n-1),(1/6)diceDistL[n-1][[k-i]],0],{i,1,6}],{k,1,6n}]
,{n,2,200}]

diceDist[n_,k_]:=If[IntegerQ[k]&&1≤k≤6n,diceDistL[n][[k]],0]

(*diceDist[s_,n_,k_]:=If[n==1,If[IntegerQ[k]&&1≤k≤s,1/s,0],Sum[(1/s)diceDist[s,n-1,k-l],{l,1,s}]]*)

Manipulate[{Show[Plot[PDF[NormalDistribution[7/2,Sqrt[(1/n)35/12]],t],{t,0,7},PlotRange->{{0,7},{0,1}}],DiscretePlot[n diceDist[n,n t],{t,0,7,1/n},ExtentSize->1/(2n),PlotRange->{{0,7},{0,1}}],ImageSize->Large],"n="<>ToString[n]},{n,1,20,1}]

Manipulate[{Show[Plot[CDF[NormalDistribution[7/2,Sqrt[35/(12n)]],t],{t,0,7},PlotRange->{{0,7},{0,1}}],DiscretePlot[Sum[diceDist[n,s],{s,1,n t}],{t,0,7,1/n},ExtentSize->Right,PlotRange->{{0,7},{0,1}}],ImageSize->Large],"n="<>ToString[n]},{n,1,20,1}]

(*CLT example with continuous uniform distribution*)

sud[1]=Interpolation[{{-1,0},{-0.001,0},{0,1},{1,1},{1.001,0},{2,0}},InterpolationOrder->0]

For[n=2,n≤10,n++,sud[n]=Interpolation[Table[{x,NIntegrate[sud[n-1][x-t],{t,0,1}]},{x,-1,n+1,0.05}],InterpolationOrder->Min[n-1,3]]]

For[n=1,n≤10,n++,suCDF[n]=Interpolation[Table[{x,NIntegrate[sud[n][t],{t,0,x}]},{x,0,n,0.05}],InterpolationOrder->Min[n,3]]]

Manipulate[{Plot[{n sud[n][n x],PDF[NormalDistribution[1/2,Sqrt[1/(12 n)]],x]},{x,0,1},PlotRange->{{0,1},{0,4.5}},ImageSize->Large],"n="<>ToString[n]},{n,1,10,1}]

Manipulate[{Plot[{suCDF[n][n x],CDF[NormalDistribution[1/2,Sqrt[1/(12 n)]],x]},{x,0,1},PlotRange->{{0,1},{0,1.1}},ImageSize->Large],"n="<>ToString[n]},{n,1,10,1}]

(*Good Normal Approximations*)

Manipulate[{Show[DiscretePlot[PDF[BinomialDistribution[n,p],k],{k,0,n},ExtentSize->1/2,PlotRange->{{0,n},{0,1}}],Plot[PDF[NormalDistribution[n p,Sqrt[n p (1-p)]],t],{t,0,n},PlotRange->{{0,n},{0,1}}],ImageSize->Large],"n="<>ToString[n],"p="<>ToString[p]},{n,1,20,1},{p,0.01,0.99}]

Manipulate[{Show[DiscretePlot[CDF[BinomialDistribution[n,p],k],{k,0,n},ExtentSize->Right,PlotRange->{{0,n},{0,1}}],Plot[CDF[NormalDistribution[n p,Sqrt[n p (1-p)]],t],{t,0,n},PlotRange->{{0,n},{0,1}}],ImageSize->Large],"n="<>ToString[n],"p="<>ToString[p]},{n,1,20,1},{p,0.01,0.99}]

Manipulate[{Show[DiscretePlot[PDF[PoissonDistribution[λ],k],{k,0,25},ExtentSize->1/2,PlotRange->{{0,25},{0,1}}],Plot[PDF[NormalDistribution[λ,Sqrt[λ]],t],{t,0,25},PlotRange->{{0,25},{0,1}}],ImageSize->Large],"λ="<>ToString[λ]},{λ,0.4,20}]

Manipulate[{Show[DiscretePlot[CDF[PoissonDistribution[λ],k],{k,0,25},ExtentSize->Right,PlotRange->{{0,25},{0,1}}],Plot[CDF[NormalDistribution[λ,Sqrt[λ]],t],{t,0,25},PlotRange->{{0,25},{0,1}}],ImageSize->Large],"λ="<>ToString[λ]},{λ,0.4,20}]

Manipulate[{Show[DiscretePlot[PDF[HypergeometricDistribution[n,bigD,bigN],k],{k,0,n},ExtentSize->1/2,PlotRange->{{0,n},{0,1}}],Plot[PDF[NormalDistribution[n bigD/bigN,Sqrt[n bigD (bigN-bigD)(bigN-n)/(bigN^2(bigN-1))]],t],{t,0,n},PlotRange->{{0,n},{0,1}}],ImageSize->Large],"n="<>ToString[n],"bigN="<>ToString[bigN],"bigD="<>ToString[bigD]},{n,1,20,1},{bigN,100,1000,1},{bigD,1,99,1}]

Manipulate[{Show[DiscretePlot[CDF[HypergeometricDistribution[n,bigD,bigN],k],{k,0,n},ExtentSize->Right,PlotRange->{{0,n},{0,1}}],Plot[CDF[NormalDistribution[n bigD/bigN,Sqrt[n bigD (bigN-bigD)(bigN-n)/(bigN^2(bigN-1))]],t],{t,0,n},PlotRange->{{0,n},{0,1}}],ImageSize->Large],"n="<>ToString[n],"bigN="<>ToString[bigN],"bigD="<>ToString[bigD]},{n,1,20,1},{bigN,100,1000,1},{bigD,1,99,1}]

Manipulate[{Show[DiscretePlot[PDF[NegativeBinomialDistribution[r,p],k],{k,0,30},ExtentSize->1/2,PlotRange->{{0,30},{0,1}}],Plot[PDF[NormalDistribution[(1-p)r/p,Sqrt[r(1-p)/p^2]],t],{t,0,30},PlotRange->{{0,30},{0,1}}],ImageSize->Large],"r="<>ToString[r],"p="<>ToString[p]},{r,1,20,1},{p,0.01,0.99}]

Manipulate[{Show[DiscretePlot[CDF[NegativeBinomialDistribution[r,p],k],{k,0,30},ExtentSize->Right,PlotRange->{{0,30},{0,1}}],Plot[CDF[NormalDistribution[(1-p)r/p,Sqrt[r(1-p)/p^2]],t],{t,0,30},PlotRange->{{0,30},{0,1}}],ImageSize->Large],"r="<>ToString[r],"p="<>ToString[p]},{r,1,20,1},{p,0.01,0.99}]

Manipulate[{Plot[{PDF[GammaDistribution[α,λ],t],PDF[NormalDistribution[α λ,Sqrt[α (λ^2)]],t]},{t,0,30},PlotRange->{{0,30},{0,1}},ImageSize->Large],"α="<>ToString[α],"λ="<>ToString[λ]},{α,0.2,20},{λ,0.2,5}]

Manipulate[{Plot[{CDF[GammaDistribution[α,λ],t],CDF[NormalDistribution[α λ,Sqrt[α (λ^2)]],t]},{t,0,30},PlotRange->{{0,30},{0,1}},ImageSize->Large],"α="<>ToString[α],"λ="<>ToString[λ]},{α,0.2,20},{λ,0.2,5}]