Code : Tout sélectionner
import animation;
settings.tex="pdflatex";
settings.outformat="gif";
unitsize(.75cm);
/* Construction de la planche */
marker hexa=marker(scale(6)*rotate(30)*polygon(6), 1bp+green);
int N=10;
for(int i=0; i<N; ++i) {
for(int j=0; j<=i; ++j) {
real x=-i*.5;
draw((x+j, -i), hexa);
}
}
for(int i=0; i<N+1; ++i) label(format("%i", i), (-N/2+i, -2.25*N), S);
draw((-(N+1)/2,-2.25*N)--((N+1)/2,-2.25*N), 1bp+lightblue);
for(int i=0; i<N+2; ++i) draw((-(N+1)/2+i, -2.25*N)--(-(N+1)/2+i, -N+.65), 1bp+lightblue);
draw((0,2)--(0,1.2),red, Arrow);
/* Animation */
dotfactor=25;
// srand((int)time("%S"));
int[] resultats=array(N+1,0);
// resultats *= 0;
animation Anim;
Anim.add();
save();
for(int n=0; n<4.5*N; ++n) {
int D=0;
pair balle=(0,0.5);
dot(balle);
Anim.add();
erase();
restore();
for(int i=0; i<N; ++i) {
save();
real s=unitrand();
if (s>0.5) {
D += 1;
balle=balle+(.5,-1);
}
else {
balle=balle+(-.5,-1);
}
dot(balle);
Anim.add();
erase();
restore();
}
resultats[D] += 1;
dot((-N/2+D, -2.25*(N+.25)+resultats[D]));
Anim.add();
save();
}
erase();
Anim.movie(delay=100);
// label(Anim.pdf(delay=100));
Je suis preneur de toute amélioration du code.
Bruno
edit : image à suivre...