Logique
Boucles
Math
Texte
Listes
Données
Variables
Fonctions
Programmation
p5.js
Objets web
Propriétés
Formes
Tortue
Apparence
var canvas, nbSimul, vitSimul, no, nom, gliss, debut, fin, pas, valeur_initiale, x, nbCoups, experience, coupPrecedent, coup, nb_total_coups; /** * Fonction exécutée une fois, au départ */ function actions_initiales() { definir_glissiere(); siClicPrudent("(select('#'+'uneExperience'))",(select('#'+'uneExperience')),"faire_une_seule_simulation",faire_une_seule_simulation); siClicPrudent("(select('#'+'recommencer'))",(select('#'+'recommencer')),"recommencer",recommencer); siChangementPrudent("(select('#'+'gliss'))",(select('#'+'gliss')),"recommencer",recommencer); recommencer(); } /** * Décrire cette fonction… */ function parametrer_glissiere(nom, debut, fin, pas, valeur_initiale) { var gliss; fixeContenuPrudent("(select('#'+'nomGliss'))",(select('#'+'nomGliss')),nom); gliss = select('#'+'gliss'); eval('gliss.elt.min =debut'); eval('gliss.elt.max =fin'); eval('gliss.elt.step =pas'); eval('gliss.elt.defaultValue =valeur_initiale'); } /** * Décrire cette fonction… */ function faire_une_seule_simulation() { fixeValeurPrudent("(select('#'+'vitesseSimul'))",(select('#'+'vitesseSimul')),0); faire_une_simulation(); } /** * Fonction exécutée périodiquement, de façon répétée */ function actions_en_boucle() { fixeContenuPrudent("(select('#'+'valGliss'))",(select('#'+'valGliss')),(valeurPrudent("(select('#'+'gliss'))",(select('#'+'gliss'))))); if (valeurPrudent("(select('#'+'vitesseSimul'))",(select('#'+'vitesseSimul'))) == 0) { return ; } frameRate(round((valeurPrudent("(select('#'+'vitesseSimul'))",(select('#'+'vitesseSimul')))))); faire_une_simulation(); } /** * Décrire cette fonction… */ function recommencer() { fixeContenuPrudent("(select('#'+'valGliss'))",(select('#'+'valGliss')),(valeurPrudent("(select('#'+'gliss'))",(select('#'+'gliss'))))); nbSimul = 0; fixeContenuPrudent("(select('#'+'nbSimul'))",(select('#'+'nbSimul')),nbSimul); fixeValeurPrudent("(select('#'+'vitesseSimul'))",(select('#'+'vitesseSimul')),nbSimul); initialiser(); } /** * Décrire cette fonction… */ function faire_une_simulation() { nbSimul = nbSimul + 1; fixeContenuPrudent("(select('#'+'nbSimul'))",(select('#'+'nbSimul')),nbSimul); faire_une_experience(); } /** * Décrire cette fonction… */ function definir_glissiere() { parametrer_glissiere('k = ', 2, 30, 1, 6); } /** * Décrire cette fonction… */ function initialiser() { fixeContenuPrudent("(select('#'+'titre'))",(select('#'+'titre')),'Dernier coup répété<br />avec un "dé" à <i>k</i> faces'); fixeContenuPrudent("(select('#'+'ligne1ga'))",(select('#'+'ligne1ga')),'k = nombre de faces du dé'); fixeContenuPrudent("(select('#'+'ligne2ga'))",(select('#'+'ligne2ga')),'Longueur de l\'expérience = ?'); fixeContenuPrudent("(select('#'+'ligne3ga'))",(select('#'+'ligne3ga')),'Expérience'); fixeContenuPrudent("(select('#'+'ligne1dr'))",(select('#'+'ligne1dr')),'Longueur moyenne = ?'); fixeContenuPrudent("(select('#'+'descriptionExperience'))",(select('#'+'descriptionExperience')),''); cacherObjetPrudent("(select('#'+'ligne2dr'))",(select('#'+'ligne2dr'))); cacherObjetPrudent("(select('#'+'ligne3dr'))",(select('#'+'ligne3dr'))); nb_total_coups = 0; } function mathRandomInt(a, b) { if (a > b) { // Swap a and b to ensure a is smaller. var c = a; a = b; b = c; } return Math.floor(Math.random() * (b - a + 1) + a); } /** * Décrire cette fonction… */ function faire_une_experience() { // 'Définir la variable nbCoups' // 'Définir la variable experience' nbCoups = 0; experience = ''; coupPrecedent = -1; while (true) { coup = mathRandomInt(1, valeurPrudent("(select('#'+'gliss'))",(select('#'+'gliss')))); nbCoups = nbCoups + 1; experience = [experience,coup,' '].join(''); if (coup == coupPrecedent) { break; } coupPrecedent = coup; } // 'Enregistrer le résultat de cette expérience' ajouter_experience(nbCoups, experience); } /** * Décrire cette fonction… */ function ajouter_experience(nbCoups, experience) { fixeContenuPrudent("(select('#'+'descriptionExperience'))",(select('#'+'descriptionExperience')),experience); fixeContenuPrudent("(select('#'+'ligne2ga'))",(select('#'+'ligne2ga')),(String('Longueur de l\'expérience = ') + String(nbCoups))); nb_total_coups = nb_total_coups + nbCoups; fixeContenuPrudent("(select('#'+'ligne1dr'))",(select('#'+'ligne1dr')),(String('Longueur moyenne = ') + String(nb_total_coups / nbSimul))); }