| Voir le sujet précédent :: Voir le sujet suivant |
| Auteur |
Message |
jerome
Inscrit le: 06 Nov 2007 Messages: 168 Localisation: Saint-Brieuc
|
Posté le: Dim Juin 06, 2010 4:19 pm Sujet du message: Lancers de dés |
|
|
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 |
|
 |
jerome
Inscrit le: 06 Nov 2007 Messages: 168 Localisation: Saint-Brieuc
|
Posté le: Dim Juin 06, 2010 4:30 pm Sujet du message: |
|
|
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 |
|
 |
jerome
Inscrit le: 06 Nov 2007 Messages: 168 Localisation: Saint-Brieuc
|
Posté le: Dim Juin 06, 2010 4:39 pm Sujet du message: |
|
|
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 |
|
 |
yves974 Site Admin

Inscrit le: 30 Oct 2007 Messages: 244 Localisation: Réunion
|
Posté le: Lun Juin 07, 2010 2:51 am Sujet du message: |
|
|
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 |
|
 |
jerome
Inscrit le: 06 Nov 2007 Messages: 168 Localisation: Saint-Brieuc
|
|
| Revenir en haut de page |
|
 |
|
|
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
|
|