login.php?sid=8f94aa0039d4a0a057bd43e46e327aa8 profile.php?mode=register&sid=8f94aa0039d4a0a057bd43e46e327aa8 faq.php?sid=8f94aa0039d4a0a057bd43e46e327aa8 memberlist.php?sid=8f94aa0039d4a0a057bd43e46e327aa8 search.php?sid=8f94aa0039d4a0a057bd43e46e327aa8 index.php?sid=8f94aa0039d4a0a057bd43e46e327aa8

Lancers de dés

 
Post new topic   Reply to topic     Forum Index -> Les CaRScripts
View previous topic :: View next topic  
Author Message
jerome



Joined: 06 Nov 2007
Posts: 173
Location: Saint-Brieuc

PostPosted: Sun Jun 06, 2010 4:19 pm    Post subject: Lancers de dés Reply with quote

Bon, rien de bien sensationnel, mais voici un petit script qui lance un dé autant de fois que l'on veut, trace un point à chaque lancer, et compte le nombre de 6, de 5 etc.

Une question : pourquoi les points s'affichent-ils tous à la fin du script et pas au fur et à mesure ?

Code:

n=eval(Input("Nombre de lancers ? (3 à 600)"));
eff=0;
for(i=1 ; i<=n ; i++){
   rdm=Math.floor(Math.random()*6)+1;
   eff=eff+Math.pow(n,(rdm-1));// travailler en base n permet de se passer du test si rdm = 5 alors effectif5++
   p=Point("","x(A)+(x(I)-x(A))/_n*_i","y(A)+_rdm*(y(J)-y(A))/6");
   SetAlias(p,rdm);SetShowName(p,true);
}

intmin=Math.max(Math.ceil(n/6-Math.sqrt(n)),0);
intmax=Math.min(Math.floor(n/6+Math.sqrt(n)),n);
Print("Pour "+n+" lancers,");
Println("l'intervalle de fluctuation est ["+intmin+" ; "+intmax+"]");
nb6=Math.floor(eff/Math.pow(n,5));
eff=eff-nb6*Math.pow(n,5);
Println("Nombre de 6 : "+nb6);
nb5=Math.floor(eff/Math.pow(n,4));
eff=eff-nb5*Math.pow(n,4);
Println("Nombre de 5 : "+nb5);
nb4=Math.floor(eff/Math.pow(n,3));
eff=eff-nb4*Math.pow(n,3);
Println("Nombre de 4 : "+nb4);
nb3=Math.floor(eff/Math.pow(n,2));
eff=eff-nb3*Math.pow(n,2);
Println("Nombre de 3 : "+nb3);
nb2=Math.floor(eff/n);
eff=eff-nb2*n;
Println("Nombre de 2 : "+nb2);
nb1=eff;
Println("Nombre de 1 : "+nb1);
Back to top
View user's profile Send private message
jerome



Joined: 06 Nov 2007
Posts: 173
Location: Saint-Brieuc

PostPosted: Sun Jun 06, 2010 4:30 pm    Post subject: Reply with quote

Bon, en lisant un autre fil, je viens de voir comment utiliser des tableaux :
Code:

var atrier=new Array;
for(n=0;n<20;n++){
   atrier[n]=Math.floor(100*Math.random());
}


Ce script proposé par alain974 va m'être très utile. Serait-il possible qu'il figure dans la doc de CaRScript ? Tout le monde ne maîtrise pas javascript, et les tableaux sont d'une grande efficacité, notamment en statistiques.
Back to top
View user's profile Send private message
jerome



Joined: 06 Nov 2007
Posts: 173
Location: Saint-Brieuc

PostPosted: Sun Jun 06, 2010 4:39 pm    Post subject: Reply with quote

Mon script est alors plus simple :
Code:

n=eval(Input("Nombre de lancers ?)"));
var eff=new Array;
for(i=1 ; i<=6 ; i++){eff[i]=0}
for(i=1 ; i<=n ; i++){
   rdm=Math.floor(Math.random()*6)+1;
   eff[rdm]++;
   p=Point("","x(A)+(x(I)-x(A))/_n*_i","y(A)+_rdm*(y(J)-y(A))/6");
   SetAlias(p,rdm);SetShowName(p,true);
}

intmin=Math.max(Math.ceil(n/6-Math.sqrt(n)),0);
intmax=Math.min(Math.floor(n/6+Math.sqrt(n)),n);
Print("Pour "+n+" lancers,");
Println("l'intervalle de fluctuation est ["+intmin+" ; "+intmax+"]");
for(i=1 ; i<=6 ; i++){
   Println("Nombre de "+i+" : "+eff[i]);
}


Mais ma question subsiste : pourquoi les points ne s'affichent-ils qu'une fois le script terminé ?
Back to top
View user's profile Send private message
yves974
Site Admin


Joined: 30 Oct 2007
Posts: 261
Location: Réunion

PostPosted: Mon Jun 07, 2010 2:51 am    Post subject: Reply with quote

Dans la dernière version du manuel de référence de Alain (corrigé après la 3.5 il y parle de tableaux, et même de tableaux à deux dimensions.

La question du rafraichissement des points à l'intérieur des scripts c'est bizarre, j'étais persuadé que c'était corrigé. Je me souviens que c'est une des raisons pour lesquelles mon script d'anniversaire sur le site de l'IREM était compliqué car les expressions étaient rafraichies et pas les points.

A priori Move est rafraichie pendant le script, donc en mettant Move à la place d'un point ça devrait le faire.

La raison c'est juste que faire rafraichir toute la figure à chaque fois prend du temps. Eric a voulu optimiser les appels, mais probablement un peu trop pour certaines fonctionnalités. (à suivre)
Back to top
View user's profile Send private message
jerome



Joined: 06 Nov 2007
Posts: 173
Location: Saint-Brieuc

PostPosted: Mon Jun 07, 2010 7:08 am    Post subject: Reply with quote

Ah, je n'avais pas souvenir de cette dernière version.
Celle que l'on trouve ici, je présume, avec un tutoriel :
http://www.reunion.iufm.fr/recherche/irem/spip.php?rubrique58

Ok, merci.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic     Forum Index -> Les CaRScripts All times are GMT
Page 1 of 1

 
  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You cannot download files in this forum


Powered by phpBB © 2001-2004 phpBB Group
phpBB Style by Vjacheslav Trushkin