CaRMetal-FR

Forum des utilisateurs francophones
login.php?sid=a906411a7028f06fabe7e229efcb0938 profile.php?mode=register&sid=a906411a7028f06fabe7e229efcb0938 faq.php?sid=a906411a7028f06fabe7e229efcb0938 memberlist.php?sid=a906411a7028f06fabe7e229efcb0938 search.php?sid=a906411a7028f06fabe7e229efcb0938 index.php?sid=a906411a7028f06fabe7e229efcb0938

Lancers de dés

 
Poster un nouveau sujet   Répondre au sujet    CaRMetal-FR Index du Forum -> Les CaRScripts
Voir le sujet précédent :: Voir le sujet suivant  
Auteur Message
jerome



Inscrit le: 06 Nov 2007
Messages: 168
Localisation: Saint-Brieuc

MessagePosté le: Dim Juin 06, 2010 4:19 pm    Sujet du message: Lancers de dés Répondre en citant

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);
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
jerome



Inscrit le: 06 Nov 2007
Messages: 168
Localisation: Saint-Brieuc

MessagePosté le: Dim Juin 06, 2010 4:30 pm    Sujet du message: Répondre en citant

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.
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
jerome



Inscrit le: 06 Nov 2007
Messages: 168
Localisation: Saint-Brieuc

MessagePosté le: Dim Juin 06, 2010 4:39 pm    Sujet du message: Répondre en citant

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é ?
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
yves974
Site Admin


Inscrit le: 30 Oct 2007
Messages: 244
Localisation: Réunion

MessagePosté le: Lun Juin 07, 2010 2:51 am    Sujet du message: Répondre en citant

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)
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
jerome



Inscrit le: 06 Nov 2007
Messages: 168
Localisation: Saint-Brieuc

MessagePosté le: Lun Juin 07, 2010 7:08 am    Sujet du message: Répondre en citant

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.
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
Montrer les messages depuis:   
Poster un nouveau sujet   Répondre au sujet    CaRMetal-FR Index du Forum -> Les CaRScripts Toutes les heures sont au format GMT
Page 1 sur 1

 
  
Vous ne pouvez pas poster de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas voter dans les sondages de ce 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
Traduction par : phpBB-fr.com