exercices/5e/5S21.js

  1. import Exercice from '../Exercice.js'
  2. import { context } from '../../modules/context.js'
  3. import { listeQuestionsToContenu, randint, combinaisonListes, simplificationDeFractionAvecEtapes, prenom, texFraction, numAlpha, range, sp } from '../../modules/outils.js'
  4. export const titre = 'Calculer des probabilités dans une expérience aléatoire à une épreuve'
  5. /**
  6. * Calculs de probabilités sur une expérience aléatoire à une épreuve.
  7. * @author Jean-Claude Lhote
  8. * Référence 5S21
  9. * Ajout de la partie vocabulaire (this.sup !== 1) par Guillaume Valmont le 03/04/2022
  10. * Remplacement des this.sup par des this.niveau par Guillaume Valmont le 07/05/2022
  11. */
  12. export const uuid = '69e1f'
  13. export const ref = '5S21'
  14. export default function FonctionsProbabilite1 () {
  15. 'use strict'
  16. Exercice.call(this) // Héritage de la classe Exercice()
  17. this.titre = titre
  18. this.consigne = ''
  19. this.nbQuestions = 4
  20. this.nbQuestionsModifiable = true
  21. this.nbCols = 1
  22. this.nbColsCorr = 1
  23. context.isHtml ? this.spacing = 2 : this.spacing = 1
  24. context.isHtml ? this.spacingCorr = 3 : this.spacingCorr = 1
  25. this.niveau = 1
  26. function singulier (qualite, index1) {
  27. if (index1 > 1) {
  28. return qualite.slice(0, -1)
  29. } else {
  30. return qualite
  31. }
  32. }
  33. this.nouvelleVersion = function () {
  34. this.listeQuestions = [] // Liste de questions
  35. this.listeCorrections = [] // Liste de questions corrigées
  36. this.autoCorrection = []
  37. const listeIndexDisponibles = [0, 1, 2, 3, 4, 5, 6]
  38. const listeIndex = combinaisonListes(listeIndexDisponibles, this.nbQuestions)
  39. const listeDeLieuxChoses = [['le frigo', 'yaourt', 'yaourts'], ['le frigo', 'dessert lacté', 'desserts lactés'], ['une urne', 'boule', 'boules'], ['une urne', 'jeton', 'jetons'], ['un paquet de bonbons', 'nounours', 'nounours'], ['un tiroir de la commode', 't-shirt', 't-shirts'], ['un tas de jetons de poker', 'jeton', 'jetons']]
  40. const qualites = [[]]
  41. qualites[0] = ['à la fraise', 'à la vanille', 'à l\'abricot', 'à l\'ananas', 'à la cerise']
  42. qualites[1] = ['au chocolat', 'à la vanille', 'au café', 'à la pistache', 'au caramel']
  43. qualites[2] = ['rouges', 'vertes', 'bleues', 'noires', 'blanches']
  44. qualites[3] = ['oranges', 'cyans', 'roses', 'jaunes', 'violets']
  45. qualites[4] = ['rouges', 'verts', 'bleus', 'noirs', 'jaunes']
  46. qualites[5] = ['rouges', 'verts', 'bleus', 'noirs', 'blancs']
  47. qualites[6] = ['rouges', 'verts', 'bleus', 'noirs', 'jaunes']
  48. for (let i = 0, p, m, q, somme, quidam, index1, lieu, objet, objets, article, pronom, defini, n = [], texte, texteCorr, cpt = 0; i < this.nbQuestions && cpt < 50;) {
  49. index1 = listeIndex[i]
  50. if (index1 === 2) { article = 'une'; pronom = 'elles'; defini = 'si elle' } else { article = 'un'; pronom = 'eux'; defini = 's\'il' }
  51. quidam = prenom()
  52. lieu = listeDeLieuxChoses[index1][0]
  53. objet = listeDeLieuxChoses[index1][1]
  54. objets = listeDeLieuxChoses[index1][2]
  55. n[0] = randint(2, 5)
  56. n[1] = randint(1, 6) + 1
  57. n[2] = randint(1, 3) * 2
  58. n[3] = randint(1, 4) + 2
  59. n[4] = randint(2, 5)
  60. somme = n[0] + n[1] + n[2] + n[3] + n[4]
  61. m = randint(0, 4)
  62. p = randint(0, 4, [m])
  63. q = randint(0, 4, [p, m])
  64. const indexEvenementContraire = range(4, [m, p])
  65. texte = `Dans ${lieu} il y a ${somme} ${objets}. ${n[0]} sont ${qualites[index1][0]}, ${n[1]} sont ${qualites[index1][1]}, ${n[2]} sont ${qualites[index1][2]}, ${n[3]} sont ${qualites[index1][3]} et ${n[4]} sont ${qualites[index1][4]}.<br> `
  66. texte += `${quidam} choisit au hasard l'${article} d'entre ${pronom}.<br> `
  67. if (parseInt(this.niveau) === 1) {
  68. texte += numAlpha(0) + ` Quelle est la probabilité que son choix tombe sur l'${article} des ${objets} ${qualites[index1][m]} ?<br>`
  69. texte += numAlpha(1) + ` Quelle est la probabilité que son choix tombe sur l'${article} des ${objets} ${qualites[index1][p]} ?<br>`
  70. texte += numAlpha(2) + ` Quelle est la probabilité que son choix ne tombe pas sur l'${article} des ${objets} ${qualites[index1][q]} ?<br>`
  71. texte += numAlpha(3) + ` Quelle est la probabilité que son choix tombe sur l'${article} des ${objets} ${qualites[index1][m]} ou ${qualites[index1][p]} ?<br>`
  72. texteCorr = 'On est dans une situation d\'équiprobabilité donc la probabilité est donnée par le quotient du nombre de cas favorables par le nombre de cas au total.<br>'
  73. texteCorr += numAlpha(0) + ` Il y a ${n[m]} ${objets} ${qualites[index1][m]} et il y a ${somme} ${objets} possibles. La probabilité que son choix tombe sur l'${article} des ${objets} ${qualites[index1][m]} est :<br> $${texFraction(n[m], somme)}${simplificationDeFractionAvecEtapes(n[m], somme)}$.<br>`
  74. texteCorr += numAlpha(1) + ` Il y a ${n[p]} ${objets} ${qualites[index1][p]} et il y a ${somme} ${objets} possibles. La probabilité que son choix tombe sur l'${article} des ${objets} ${qualites[index1][p]} est :<br> $${texFraction(n[p], somme)}${simplificationDeFractionAvecEtapes(n[p], somme)}$.<br>`
  75. texteCorr += numAlpha(2) + ` Il y a ${n[q]} ${objets} ${qualites[index1][q]}, donc il y a ${somme} $-$ ${n[q]} $=$ ${somme - n[q]} autres ${objets} et il y a ${somme} ${objets} possibles. La probabilité que son choix ne tombe pas sur l'${article} des ${objets} ${qualites[index1][q]} est :<br> $${texFraction(somme - n[q], somme)}${simplificationDeFractionAvecEtapes(somme - n[q], somme)}$.<br>`
  76. texteCorr += numAlpha(3) + ` La probabilité d'un événement est la somme des probabilités des issues qui le composent. Donc la probabilité que son choix tombe sur l'${article} des ${objets} ${qualites[index1][m]} ou ${qualites[index1][p]} est :<br> $${texFraction(n[m], somme)}+${texFraction(n[p], somme)}=${texFraction(n[p] + n[m], somme)}${simplificationDeFractionAvecEtapes(n[p] + n[m], somme)}$.<br>`
  77. } else {
  78. texte += numAlpha(0) + ' Est-ce que c\'est une expérience aléatoire ? Pourquoi ?<br>'
  79. texteCorr = numAlpha(0) + ` On sait qu'on tombera sur ${article} ${objet} mais on ne sait pas ${defini} sera ${singulier(qualites[index1][0], index1)}, ${singulier(qualites[index1][1], index1)}, ${singulier(qualites[index1][2], index1)}, ${singulier(qualites[index1][3], index1)} ou ${singulier(qualites[index1][4], index1)}.<br>On ne peut pas prévoir à l'avance le résultat, c'est donc une expérience aléatoire.<br>`
  80. texte += numAlpha(1) + ' Quelles sont les issues ?<br>'
  81. texteCorr += numAlpha(1) + `Les issues sont :<br>
  82. - tomber sur ${article} ${objet} ${singulier(qualites[index1][0], index1)} ;<br>
  83. - tomber sur ${article} ${objet} ${singulier(qualites[index1][1], index1)} ;<br>
  84. - tomber sur ${article} ${objet} ${singulier(qualites[index1][2], index1)} ;<br>
  85. - tomber sur ${article} ${objet} ${singulier(qualites[index1][3], index1)} ;<br>
  86. - tomber sur ${article} ${objet} ${singulier(qualites[index1][4], index1)}.<br>`
  87. texte += numAlpha(2) + ` Quelles issues réalisent l'événement «${sp(1)}Tomber sur l'${article} des ${objets} ${qualites[index1][m]} ou ${qualites[index1][p]}${sp(1)}» ?<br>`
  88. texteCorr += numAlpha(2) + `Les issues qui réalisent l'événement «${sp(1)}Tomber sur l'${article} des ${objets} ${qualites[index1][m]} ou ${qualites[index1][p]}${sp(1)}» sont :<br>
  89. - tomber sur ${article} ${objet} ${singulier(qualites[index1][m], index1)} ;<br>
  90. - tomber sur ${article} ${objet} ${singulier(qualites[index1][p], index1)}.<br>`
  91. if (parseInt(this.niveau) > 2) {
  92. texte += numAlpha(3) + ` Quel est l'événement contraire de «${sp(1)}Tomber sur l'${article} des ${objets} ${qualites[index1][m]} ou ${qualites[index1][p]}${sp(1)}» ?<br>`
  93. texteCorr += numAlpha(3) + ` L'événement contraire de «${sp(1)}Tomber sur l'${article} des ${objets} ${qualites[index1][m]} ou ${qualites[index1][p]}${sp(1)}» est l'événement «${sp(1)}Tomber sur l'${article} des ${objets} ${qualites[index1][indexEvenementContraire[0]]}, ${qualites[index1][indexEvenementContraire[1]]} ou ${qualites[index1][indexEvenementContraire[2]]}${sp(1)}».`
  94. } else {
  95. texte += numAlpha(3) + ` Quelles issues ne réalisent pas l'événement «${sp(1)}Tomber sur l'${article} des ${objets} ${qualites[index1][q]} ou ${qualites[index1][m]}${sp(1)}» ?<br>`
  96. texteCorr += numAlpha(3) + ` Les issues qui ne réalisent pas l'événement «${sp(1)}Tomber sur l'${article} des ${objets} ${qualites[index1][m]} ou ${qualites[index1][p]}${sp(1)}» sont :<br>
  97. - tomber sur ${article} ${objet} ${singulier(qualites[index1][indexEvenementContraire[0]], index1)} ;<br>
  98. - tomber sur ${article} ${objet} ${singulier(qualites[index1][indexEvenementContraire[1]], index1)} ;<br>
  99. - tomber sur ${article} ${objet} ${singulier(qualites[index1][indexEvenementContraire[2]], index1)}.`
  100. }
  101. }
  102. if (this.questionJamaisPosee(i, n[0], n[1], n[2], n[3], n[4], m, p, q)) { // Si la question n'a jamais été posée, on en créé une autre
  103. this.listeQuestions.push(texte)
  104. this.listeCorrections.push(texteCorr)
  105. i++
  106. }
  107. cpt++
  108. }
  109. listeQuestionsToContenu(this) // Espacement de 2 em entre chaque questions.
  110. }
  111. }