HEX
Server: Apache
System: Linux vps.mmtprep.com 4.18.0-477.21.1.el8_8.x86_64 #1 SMP Thu Aug 10 13:51:50 EDT 2023 x86_64
User: mmtprep (1001)
PHP: 8.1.34
Disabled: exec,passthru,shell_exec,system
Upload Files
File: /home/mmtprep/public_html/mathzen.mmtprep.com/assets/beta3S20-1-RMTu5t-c.js.map
{"version":3,"file":"beta3S20-1-RMTu5t-c.js","sources":["../../src/modules/debarras/listeEntiersSommeConnue.js","../../src/exercices/beta/beta3S20-1.js"],"sourcesContent":["import { randint } from '../outils.js'\n\n/**\n * Donne une liste d'entiers relatifs dont on connait la somme.\n * @example > listeEntiersSommeConnue(4,10,-2)\n * < [1,-2,6,5]\n * @param {int} nbElements Nombre d'éléments de la liste\n * @param {int} total Somme des éléments de la liste (peut être un nombre négatif)\n * @param {int} [valMin = 1] Valeur minimale de chaque élément (peut être un nombre négatif)\n * @return {Array} Liste d'entiers relatifs\n * @author Frédéric PIOU\n */\nexport function listeEntiersSommeConnue (nbElements, total, valMin = 1) {\n  const liste = []\n  liste.push(randint(valMin, total - (nbElements - 1) * valMin))\n  for (let j = 1; j < nbElements - 1; j++) {\n    liste.push(randint(liste[j - 1] + valMin, total - (nbElements - j - 1) * valMin))\n  }\n  liste.push(total)\n  for (let j = nbElements - 1; j > 0; j--) {\n    liste[j] = liste[j] - liste[j - 1]\n  }\n  return liste\n}\n","import { diagrammeBarres } from '../../lib/2d/diagrammes.js'\nimport { choice, combinaisonListes } from '../../lib/outils/arrayOutils'\nimport { decompositionFacteursPremiers } from '../../lib/outils/primalite'\nimport { listeEntiersSommeConnue } from '../../modules/debarras/listeEntiersSommeConnue.js'\nimport Exercice from '../deprecatedExercice.js'\nimport { fixeBordures, mathalea2d } from '../../modules/2dGeneralites.js'\nimport { context } from '../../modules/context.js'\nimport { randint, listeQuestionsToContenu, num } from '../../modules/outils.js'\nimport { multiply, divide, matrix, isPrime, sum, gcd, fraction, round } from 'mathjs'\nexport const titre = 'Calculs de probabilités'\n\n// Les exports suivants sont optionnels mais au moins la date de publication semble essentielle\nexport const dateDePublication = '12/12/2021' // La date de publication initiale au format 'jj/mm/aaaa' pour affichage temporaire d'un tag\n\nfunction fraction2Tex (fraction) {\n  const signe = fraction.s === 1 ? '' : '-'\n  return fraction.d !== 1 ? String.raw`${signe}\\dfrac{${num(fraction.n)}}{${num(fraction.d)}}` : String.raw`${signe}${num(fraction.n)}`\n}\n\nfunction graphique (hauteursBarres, etiquettes, { reperageTraitPointille = false, couleurDeRemplissage = 'blue', titreAxeVertical = '', titre = '', hauteurDiagramme = 5, coeff = 2, axeVertical = false, etiquetteValeur = true, labelAxeVert = false } = {}) {\n  const diagramme = diagrammeBarres(hauteursBarres, etiquettes, { reperageTraitPointille, couleurDeRemplissage, titreAxeVertical, titre, hauteurDiagramme, coeff, axeVertical, etiquetteValeur, labelAxeVert })\n  return mathalea2d(Object.assign({}, fixeBordures([diagramme], { rxmin: -3, rymin: -2, rymax: 1.5 }), { style: 'inline', scale: 1 }), diagramme)\n}\n// adapté par Loïc : Ajout du paramètre indices pour pouvoir mettre des indices aux symboles des évènements\nfunction listeExhaustive (univers, ratios, indices = false) {\n  // On créé une liste exhaustive avec répétition de chaque issue\n  // [blanche blanche blanche noire noire] pour un ratio 3:2 de billes blanches et noires\n  const issues = []\n  for (let j = 0; j < univers.length; j++) {\n    if (ratios[j] > 1) {\n      issues.push(...combinaisonListes([univers[j]], ratios[j]))\n    } else {\n      issues.push(univers[j])\n    }\n  }\n  // adapté par Loïc\n  const issuesAbregees = []\n  if (indices) {\n    for (let i = 0; i < univers.length; i++) {\n      const listIndex = []\n      let idx = issues.indexOf(univers[i])\n      while (idx !== -1) {\n        listIndex.push(idx)\n        idx = issues.indexOf(univers[i], idx + 1)\n      }\n\n      if (listIndex.length !== 1) {\n        for (let j = 0; j < listIndex.length; j++) {\n          issuesAbregees.push(issues[listIndex[j]][0].toUpperCase() + `_${j + 1}`)\n        }\n      } else issuesAbregees.push(issues[listIndex[0]][0].toUpperCase())\n    }\n  } else {\n    for (let index = 0; index < issues.length; index++) {\n      issuesAbregees.push(issues[index][0].toUpperCase())\n    }\n  }\n\n  return { issues, issuesAbregees }\n}\n\nfunction simulationExperienceAlaetoire (univers, ratios, nbEssais) {\n  const issues = listeExhaustive(univers, ratios, true).issues\n  const effectifs = []\n  const realisees = []\n  for (let j = 0; j < nbEssais; j++) {\n    const issue = issues[randint(0, issues.length - 1)] // On choisit une issue dans la liste [blanche blanche blanche noire noire]\n    const refIssue = univers.indexOf(issue) // On trouve sa position dans l'urne qui va être la référence dans realisees\n    if (realisees.indexOf(refIssue) !== -1) { // On teste si cette référence à cette issue existe dans les issues réalisées\n      effectifs[realisees.indexOf(refIssue)] += 1 // Si c'est le cas on ajoute 1\n    } else {\n      realisees.push(refIssue) // Sinon on ajoute la référence aux issues réalisées\n      effectifs.push(1) // L'effectif de cette référence passe à 1\n    }\n  }\n  // Calcul des fréquences sous forme d'une fraction mathjs\n  const frequences = []\n  for (let j = 0; j < realisees.length; j++) {\n    frequences.push(fraction(effectifs[j], nbEssais))\n  }\n  return { effectifs, frequences, realisees }\n}\n\nfunction etapesSimplificationFraction (n = 21, d = 45, A = undefined, methode = 0, aligned = false) {\n  let etapes = []\n  const p = gcd(n, d)\n  let netapes = 0\n  switch (methode) {\n    case 0:\n      etapes.push(String.raw`\\dfrac{${n / p}\\times${p}}{${d / p}\\times${p}}`)\n      if (p > 1) {\n        etapes.push(String.raw`\\dfrac{${n / p}}{${d / p}}`)\n        netapes += 1\n      }\n      if (A === undefined) {\n        etapes = etapes.join('=')\n        etapes = '$' + etapes + '$'\n      } else if (A === '' && netapes > 0) {\n        if (aligned) {\n          etapes = etapes.join('\\\\\\\\&=')\n          etapes = String.raw`\n          <br>\n          $\\begin{aligned}\n          \\dfrac{${n}}{${d}}&=${etapes}\n          \\end{aligned}$\n          <br>\n          `\n        } else {\n          etapes = String.raw`$\\dfrac{${n}}{${d}}=${etapes.join('=')}$`\n        }\n      } else if (netapes > 0) {\n        if (aligned) {\n          etapes = etapes.join('\\\\\\\\&=')\n          etapes = String.raw`\n          <br>\n          $\\begin{aligned}\n          ${A}&=${etapes}\n          \\end{aligned}$\n          <br>\n          `\n        } else {\n          etapes = String.raw`$${A}=${etapes.join('=')}$`\n        }\n      } else {\n        etapes = '<br>'\n      }\n      break\n    case 1: // Pas de aligned, pas de détails\n      if (netapes > 0) {\n        if (A === undefined) { // Pour une sortie inline\n          etapes = String.raw`$\\dfrac{${n / p}}{${d / p}}$`\n        } else if (A === '') {\n          etapes = String.raw`\n          <br>\n          $\\dfrac{${n}}{${p}} = \\dfrac{${n / p}}{${d / p}}$\n          <br>\n          `\n        } else {\n          etapes = String.raw`\n          <br>\n          $${A} = \\dfrac{${n / p}}{${d / p}}$\n          <br>\n          `\n        }\n      } else {\n        etapes = '<br>'\n      }\n      break\n  }\n  return etapes\n}\n\nfunction diagrammeCalculsFrequences (typeReponseAttendue = 0) {\n  const urne = combinaisonListes(['jaune', 'verte', 'bleue', 'rouge', 'noire']).slice(0, randint(2, 3))\n  let totalRatios = urne.length + randint(1, 15)\n  const ratios = listeEntiersSommeConnue(urne.length, totalRatios, 1) // On choisit au hasard les ratios\n  if (gcd(...ratios) !== 1) {\n    for (let j = 0; j < urne.length; j++) {\n      ratios[j] = ratios[j] / gcd(...ratios)\n    }\n    totalRatios = sum(ratios)\n  }\n  const nbEssais = totalRatios * randint(1, 9)\n  const experience = simulationExperienceAlaetoire(urne, ratios, nbEssais)\n  const issuesReordonnees = []\n  for (let j = 0; j < experience.realisees.length; j++) {\n    issuesReordonnees.push(urne[experience.realisees[j]])\n  }\n  const diagrammeEffectifs = graphique(experience.effectifs, issuesReordonnees, { axeVertical: true, titreAxeVertical: 'Effectifs', labelAxeVert: true })\n  const choixRef = choice(experience.realisees) // Choix d'une référence\n  const posRef = experience.realisees.indexOf(choixRef) // Position de la référence dans realises\n  const choixIssue = urne[choixRef] // Issue correspondante à ce choix (les billes dans l'urne ne sont listées dans le même ordre)\n  const remarque = [\n    '$\\\\textit{* On donnera la valeur exacte et simplifiée.}$',\n    '$\\\\textit{* On donnera la valeur sous forme décimale arrondie au millième (si nécessaire).}$',\n    '$\\\\textit{* On donnera la valeur en pourcentage arrondi à l\\'unité (si nécessaire).}$'\n  ][typeReponseAttendue]\n  let solution\n  let environ = ''\n  switch (typeReponseAttendue) {\n    case 0:\n      solution = {\n        calculs: `${etapesSimplificationFraction(experience.effectifs[posRef], nbEssais, '', 0, true)}`,\n        reponse: `$${fraction2Tex(experience.frequences[posRef], true)}$`\n      }\n      break\n    case 1: {\n      let approchee = fraction(round(experience.frequences[posRef].valueOf(), 3))\n      environ = approchee - fraction(experience.effectifs[posRef], nbEssais) === 0 ? '' : 'environ'\n      approchee = num(approchee)\n      const approx = (environ === 'environ') ? '\\\\approx' : '='\n      solution = {\n        calculs: String.raw`<br>$\\dfrac{${experience.effectifs[posRef]}}{${nbEssais}}${approx}${approchee}$<br>`,\n        reponse: `$${approchee}$`\n      }\n      break\n    }\n    case 2: {\n      let approchee = fraction(round(experience.frequences[posRef].valueOf(), 2))\n      environ = approchee - fraction(experience.effectifs[posRef], nbEssais) === 0 ? '' : 'environ'\n      approchee = { decimal: num(approchee), pourcentage: num(approchee.mul(100)) }\n      const approx = (environ === 'environ') ? '\\\\approx' : '='\n      solution = {\n        calculs: String.raw`<br>$\\dfrac{${experience.effectifs[posRef]}}{${nbEssais}}${approx}${approchee.decimal}$<br>`,\n        reponse: `$${approchee.pourcentage}~\\\\%$`\n      }\n      break\n    }\n  }\n  const texte = String.raw`Une urne contient des billes de différentes couleurs.\n          <br>\n          L'expérience consiste à tirer une bille au hasard,\n          à noter sa couleur, puis à la remettre dans l'urne.\n          <br>\n          On obtient le diagramme des effectifs ci-dessous\n          ` +// au bout de $${nbEssais}$ tirages.\n          String.raw`<br>\n          ${diagrammeEffectifs}\n          <br>\n          Calculer la fréquence d'apparition de la couleur ${choixIssue}$\\textit{*}$.\n          <br>\n          ${remarque}\n          `\n  const texteCorr = String.raw`\n          La fréquence d'apparition d'une couleur est le quotient\n          du nombre d'apparitions de cette couleur par le nombre total de tirages.\n          <br>\n          $${experience.effectifs.join('+')}=${nbEssais}$\n          <br>\n          Donc il y a eu $${nbEssais}$ tirages.\n          <br>\n          La bille de couleur ${choixIssue} est apparue\n          $${experience.effectifs[posRef]}$ fois sur $${nbEssais}$ tirages.\n          ${solution.calculs}\n          Donc la fréquence d'apparition de la couleur ${choixIssue} est ${environ} ${solution.reponse}.\n          `\n  return { texte, texteCorr }\n}\n\nfunction ratiosCalculsProbabilites () {\n  const urne = combinaisonListes(['jaune', 'verte', 'bleue', 'rouge', 'noire']).slice(0, randint(2, 3))\n  let totalRatios = urne.length + randint(1, 15)\n  const ratios = listeEntiersSommeConnue(urne.length, totalRatios, 1) // On choisi au hasard les ratios\n  if (gcd(...ratios) !== 1) {\n    for (let j = 0; j < urne.length; j++) {\n      ratios[j] = ratios[j] / gcd(...ratios)\n    }\n    totalRatios = sum(ratios)\n  }\n  const choixRef = randint(1, urne.length) - 1 // Choix d'une référence\n  const choixIssue = urne[choixRef] // Issue correspondante à ce choix (les billes dans l'urne ne sont listées dans le même ordre)\n  const choixRatio = ratios[choixRef]\n  const plurielsIssues = []\n  for (const issue of urne) {\n    plurielsIssues.push(issue + 's')\n  }\n  const solution = {\n    calculs: `${etapesSimplificationFraction(choixRatio, sum(ratios), '', 0, true)}`,\n    reponse: `$${fraction2Tex(fraction(choixRatio, sum(ratios)))}$`\n  }\n  const texte = `Une urne contient des billes de couleurs différentes : des\n          ${plurielsIssues.slice(0, plurielsIssues.length - 1).join(', des ')}\n          et des ${plurielsIssues[plurielsIssues.length - 1]}\n          dans le ratio $${ratios.join('{:}')}$.\n          <br>\n          L'expérience consiste à tirer une bille au hasard et\n          à noter sa couleur.\n          <br>\n          Calculer la probabilité d'obtenir une bille de couleur ${choixIssue}.`\n  const texteCorr = String.raw`\n          Comme $${ratios.join('+')}=${sum(ratios)}$, la proportion de billes ${choixIssue}s est $\\dfrac{${choixRatio}}{${sum(ratios)}}$.\n          ${solution.calculs}\n          Donc la probabilité d'obtenir une bille de couleur ${choixIssue} est égale à ${solution.reponse}.\n          `\n  return { texte, texteCorr }\n}\n\nfunction probabilitesCalculsRatios () {\n  const urne = combinaisonListes(['jaune', 'verte', 'bleue', 'rouge', 'noire']).slice(0, 3)\n  let ratios = []\n  let compteurSimplifications = []\n  let simplifications = []\n  let totalRatios = 0\n  while (isPrime(totalRatios) || totalRatios === 0 || compteurSimplifications.length < 3) {\n    compteurSimplifications = []\n    simplifications = []\n    totalRatios = urne.length + randint(1, 45)\n    ratios = listeEntiersSommeConnue(urne.length, totalRatios, 1) // On choisit au hasard les ratios\n    // On simplifie le ratio\n    if (gcd(...ratios) !== 1) {\n      for (let j = 0; j < urne.length; j++) {\n        ratios[j] = ratios[j] / gcd(...ratios)\n      }\n      totalRatios = sum(ratios)\n    }\n    for (let j = 0; j < ratios.length; j++) {\n      if (fraction(ratios[j], sum(ratios)).d !== sum(ratios)) {\n        simplifications.push(String.raw`$${fraction2Tex(fraction(ratios[j], sum(ratios)))} = \\dfrac{${ratios[j]}}{${sum(ratios)}}$`)\n      } else {\n        simplifications.push(String.raw`$${fraction2Tex(fraction(ratios[j], sum(ratios)))}$`)\n      }\n      if (compteurSimplifications.indexOf(fraction(ratios[j], sum(ratios)).d) === -1) compteurSimplifications.push(fraction(ratios[j], sum(ratios)).d)\n    }\n  }\n  // Pluriels\n  const plurielsIssues = []\n  for (const issue of urne) {\n    plurielsIssues.push(issue + 's')\n  }\n  const probabilites = []\n  for (let j = 0; j < urne.length; j++) {\n    probabilites.push(`$${fraction2Tex(fraction(ratios[j], sum(ratios)))}$`)\n  }\n  const texte = `Une urne contient des billes de couleurs différentes : des\n          ${plurielsIssues.slice(0, plurielsIssues.length - 1).join(', des ')}\n          et des ${plurielsIssues[plurielsIssues.length - 1]}.\n          <br>\n          L'expérience consiste à tirer une bille au hasard et\n          à noter sa couleur.\n          <br>\n          Les probabilités respectives de tirer chaque couleur sont ${probabilites.slice(0, probabilites.length - 1).join(', ')}\n          et ${probabilites[probabilites.length - 1]}.\n          <br>\n          Dans quel ratio les couleurs sont-elles ?`\n  const texteCorr = String.raw`\n          Écrivons toutes les probabilités avec le même dénominateur.\n          <br>\n          ${simplifications.join(' ; ')}\n          <br>\n          Donc les couleurs ${plurielsIssues.slice(0, plurielsIssues.length - 1).join(', ')}\n          et ${plurielsIssues[plurielsIssues.length - 1]}\n          sont dans le ratio $${ratios.join('{:}')}$.\n          `\n  return { texte, texteCorr }\n}\n\nfunction ratios2EpreuvesCalculsProbabilites () {\n  const urne = combinaisonListes(['jaune', 'verte', 'bleue', 'rouge', 'noire']).slice(0, randint(2, 3))\n  let totalRatios = urne.length + randint(0, 3)\n  const ratios = listeEntiersSommeConnue(urne.length, totalRatios, 1) // On choisi au hasard les ratios\n  if (gcd(...ratios) !== 1) {\n    for (let j = 0; j < urne.length; j++) {\n      ratios[j] = ratios[j] / gcd(...ratios)\n    }\n    totalRatios = sum(ratios)\n  }\n  const issues = listeExhaustive(urne, ratios, true)\n  const choixRef = [randint(1, urne.length) - 1, randint(1, urne.length) - 1] // Choix d'une référence\n  const choixIssue = [urne[choixRef[0]], urne[choixRef[1]]] // Issue correspondante à ce choix (les billes dans l'urne ne sont listées dans le même ordre)\n  const evenement = choixIssue[0] === choixIssue[1]\n    ? `Obtenir deux billes de couleurs ${choixIssue[1]}s`\n    : `Obtenir une bille de couleur ${choixIssue[0]}\n          et une bille de couleur ${choixIssue[1]}`\n  const choixRatio = [ratios[choixRef[0]], ratios[choixRef[1]]]\n  const plurielsIssues = []\n  for (const issue of urne) {\n    plurielsIssues.push(issue + 's')\n  }\n  const probabilites = []\n  for (let j = 0; j < urne.length; j++) {\n    probabilites.push(`$${fraction2Tex(fraction(ratios[j], sum(ratios)))}$`)\n  }\n  const texte = `Une urne contient des billes de couleurs différentes : des\n          ${plurielsIssues.slice(0, plurielsIssues.length - 1).join(', des ')}\n          et des ${plurielsIssues[plurielsIssues.length - 1]}\n          dans le ratio $${ratios.join('{:}')}$.\n          <br>\n          L'expérience consiste à tirer une bille au hasard,\n          à noter sa couleur, à la replacer dans l'urne,\n          puis à recommencer une seconde fois.\n          <br>\n          Quelle est la probabilité de l'événement \"${evenement}\" ?\n          `\n  let lignes = [`\\\\hline &${issues.issuesAbregees.join('&')}\\\\\\\\`]\n  for (let j = 0; j < issues.issues.length; j++) {\n    lignes.push(`\\\\hline ${issues.issuesAbregees[j]}`)\n    for (let k = 0; k < issues.issues.length; k++) {\n      lignes.push(`&(${issues.issuesAbregees[j]}{;}${issues.issuesAbregees[k]})`)\n    }\n    lignes.push('\\\\\\\\')\n  }\n  lignes = lignes.join('')\n  const corrProba = choixIssue[0] === choixIssue[1] ? 1 : 2\n  const issuesquirealisent = choixRatio[0] * choixRatio[1] * corrProba === 1 ? 'issue qui réalise' : 'issues qui réalisent'\n  const solution = {\n    calculs: `${etapesSimplificationFraction(choixRatio[0] * choixRatio[1] * corrProba, issues.issues.length ** 2, '', 0, true)}`,\n    reponse: `$${fraction2Tex(fraction(choixRatio[0] * choixRatio[1] * corrProba, issues.issues.length ** 2), true)}$`\n  }\n  const texteCorr = String.raw`\n          Listons dans un tableau à double entrée toutes les issues\n          de cette expérience.\n          <br>\n          $\n          \\begin{array}{${listeExhaustive(['|c'], [issues.issues.length + 1], true).issues.join('')}|}\n          ${lignes}\n          \\hline\n          \\end{array}\n          $\n          <br>\n          Il y a $${issues.issues.length ** 2}$ issues au total\n          et toutes ont la même probabilité d'être obtenue.\n          <br>\n          Il y a $${choixRatio[0] * choixRatio[1] * corrProba}$ ${issuesquirealisent} l'événement \"${evenement}\".\n          ${solution.calculs}\n          Donc la probabilité de cet événement est ${solution.reponse}.\n          `\n  return { texte, texteCorr }\n}\n\nfunction ratioPiece2EpreuvesCalculsProbabilites () {\n  const urne1 = combinaisonListes(['jaune', 'verte', 'bleue', 'rouge', 'noire']).slice(0, randint(2, 3))\n  const urne2 = combinaisonListes(['Pile', 'Face']).slice(0, 2)\n  let totalRatios1 = urne1.length + randint(0, 3)\n  const totalRatios2 = urne2.length\n  const ratios1 = listeEntiersSommeConnue(urne1.length, totalRatios1, 1) // On choisi au hasard les ratios\n  const ratios2 = listeEntiersSommeConnue(urne2.length, totalRatios2, 1) // On choisi au hasard les ratios\n  if (gcd(...ratios1) !== 1) {\n    for (let j = 0; j < urne1.length; j++) {\n      ratios1[j] = ratios1[j] / gcd(...ratios1)\n    }\n    totalRatios1 = sum(ratios1)\n  }\n  const issues1 = listeExhaustive(urne1, ratios1, true)\n  const issues2 = listeExhaustive(urne2, ratios2, true)\n  const choixRef = [randint(1, urne1.length) - 1, randint(1, urne2.length) - 1] // Choix d'une référence\n  const choixIssue = [urne1[choixRef[0]], urne2[choixRef[1]]] // Issue correspondante à ce choix (les billes dans l'urne ne sont listées dans le même ordre)\n  const evenement = `Obtenir une bille de couleur ${choixIssue[0]} avec l'urne et obtenir ${choixIssue[1]} avec la pièce`\n  const choixRatio = [ratios1[choixRef[0]], 1]\n  const plurielsIssues = []\n  for (const issue of urne1) {\n    plurielsIssues.push(issue + 's')\n  }\n  const texte = `Une urne contient des billes de couleurs différentes : des\n          ${plurielsIssues.slice(0, plurielsIssues.length - 1).join(', des ')}\n          et des ${plurielsIssues[plurielsIssues.length - 1]}\n          dans le ratio $${ratios1.join('{:}')}$.\n          <br>\n          L'expérience consiste à tirer une bille au hasard,\n          à noter sa couleur, à lancer une pièce de monnaie équilibrée\n          puis à noter la face du dessus.\n          <br>\n          Quelle est la probabilité de l'événement \"${evenement}\" ?\n          `\n  let lignes = [`\\\\hline &${issues1.issuesAbregees.join('&')}\\\\\\\\`]\n  for (let j = 0; j < issues2.issues.length; j++) {\n    lignes.push(`\\\\hline ${issues2.issuesAbregees[j]}`)\n    for (let k = 0; k < issues1.issues.length; k++) {\n      lignes.push(`&(${issues2.issuesAbregees[j]}{;}${issues1.issuesAbregees[k]})`)\n    }\n    lignes.push('\\\\\\\\')\n  }\n  lignes = lignes.join('')\n  const issuesquirealisent = choixRatio[0] * choixRatio[1] === 1 ? 'issue qui réalise' : 'issues qui réalisent'\n  const solution = {\n    calculs: `${etapesSimplificationFraction(choixRatio[0] * choixRatio[1], issues1.issues.length * issues2.issues.length, '', 0, true)}`,\n    reponse: `$${fraction2Tex(fraction(choixRatio[0] * choixRatio[1], issues1.issues.length * issues2.issues.length), true)}$`\n  }\n  const texteCorr = String.raw`\n          Listons dans un tableau à double entrée toutes les issues\n          de cette expérience.\n          <br>\n          $\n          \\begin{array}{${listeExhaustive(['|c'], [issues1.issues.length + 1], true).issues.join('')}|}\n          ${lignes}\n          \\hline\n          \\end{array}\n          $\n          <br>\n          Il y a $${issues1.issues.length * issues2.issues.length}$ issues au total\n          et toutes ont la même probabilité d'être obtenue.\n          <br>\n          Il y a $${choixRatio[0] * choixRatio[1]}$ ${issuesquirealisent} l'événement \"${evenement}\".\n          ${solution.calculs}\n          Donc la probabilité de cet événement est ${solution.reponse}.\n          `\n  return { texte, texteCorr }\n}\n\nfunction diagrammeEffectifsCalculsLoiGrandNombre () {\n  const urne = combinaisonListes(['jaune', 'verte', 'bleue', 'rouge', 'noire']).slice(0, 4)\n  let totalRatios = urne.length + randint(100, 350)\n  const ratios = listeEntiersSommeConnue(urne.length, totalRatios, round(totalRatios / 10)) // On choisit au hasard les ratios\n  if (gcd(...ratios) !== 1) {\n    for (let j = 0; j < urne.length; j++) {\n      ratios[j] = ratios[j] / gcd(...ratios)\n    }\n    totalRatios = sum(ratios)\n  }\n  const nbEssais = totalRatios * randint(300, 500)\n  const experience = simulationExperienceAlaetoire(urne, ratios, nbEssais)\n  const issuesReordonnees = []\n  for (let j = 0; j < experience.realisees.length; j++) {\n    issuesReordonnees.push(urne[experience.realisees[j]])\n  }\n  const diagrammeEffectifs = graphique(experience.effectifs, issuesReordonnees, { axeVertical: true, titreAxeVertical: 'Effectifs' })\n  const choixRef = choice(experience.realisees) // Choix d'une référence\n  const posRef = experience.realisees.indexOf(choixRef) // Position de la référence dans realises\n  const choixIssue = urne[choixRef] // Issue correspondante à ce choix (les billes dans l'urne ne sont listées dans le même ordre)\n  const solution = {\n    calculs: `${etapesSimplificationFraction(experience.effectifs[posRef], nbEssais, '', 0, true)}`,\n    reponse: `${fraction2Tex(experience.frequences[posRef])}`\n  }\n  const texte = String.raw`Une urne contient ${totalRatios} billes de couleurs différentes.\n          <br>\n          L'expérience consiste à tirer une bille au hasard,\n          à noter sa couleur, puis à la remettre dans l'urne.\n          <br>\n          On obtient le diagramme des effectifs ci-dessous\n          après $${num(nbEssais)}$ tirages où on a pu constater\n          une stabilisation des fréquences de chaque issue.\n          <br>\n          ${diagrammeEffectifs}\n          <br>\n          Estimer le nombre de billes de couleur ${choixIssue} qu'il y a dans l'urne.\n          `\n  const texteCorr = String.raw`\n          La fréquence d'apparition d'une couleur est le quotient\n          du nombre d'apparitions de cette couleur par le nombre total d'essais.\n          <br>\n          La bille de couleur ${choixIssue} est apparue\n          $${num(experience.effectifs[posRef])}$ fois sur $${num(nbEssais)}$ tirages.\n          ${solution.calculs}\n          Donc la fréquence d'apparition de la couleur ${choixIssue} est $${solution.reponse}$.\n          <br>\n          Pour un nombre suffisamment grand d'essais, la fréquence d'une issue se stabilise quasiment toujours au niveau de sa probabilité.\n          <br>\n          La proportion de billes de couleur ${choixIssue} est donc proche de cette fréquence.\n          <br>\n          $${solution.reponse} \\times ${totalRatios} \\approx ${ratios[choixRef]}$.\n          <br>\n          Il y a de fortes chances pour qu'il y ait $${ratios[choixRef]}$ billes ${choixIssue}s dans l'urne.\n          `\n  return { texte, texteCorr }\n}\n\nfunction exerciceSimplificationRatios () {\n  let totalRatios = 3 + randint(1, 15)\n  let ratios = matrix(listeEntiersSommeConnue(3, totalRatios, 1)) // On choisit au hasard les ratios\n  ratios = divide(ratios, gcd(...ratios._data))\n  totalRatios = sum(ratios)\n  const k = randint(2, 16)\n  const kratios = multiply(ratios, k)\n  let listeDecompositions = []\n  for (const n of kratios._data) {\n    const d = String.raw`\\bullet\\quad${n}=${decompositionFacteursPremiers(n)}`\n    if (listeDecompositions.indexOf(d) === -1) listeDecompositions.push(d)\n  }\n  let introduction = ''\n  if (listeDecompositions.length > 1) {\n    listeDecompositions = '$' + listeDecompositions.join('\\\\quad') + '$'\n    introduction = `Décomposons chaque partie du ratio en produits de facteurs premiers pour déterminer le PGCD.\n    <br>\n    ${listeDecompositions}\n    <br>\n    Le PGCD des trois parties du ratio est ${k}.\n    <br>\n    `\n  }\n  const texte = String.raw`Simplifier le ratio $${kratios._data.join('{:}')}$\n          `\n  const texteCorr = String.raw`${introduction}\n          On peut donc le simplifier par ${k}.\n          <br>\n          $${kratios._data.join('{:}')} = ${ratios._data.join('{:}')}$\n          `\n  return { texte, texteCorr }\n}\n\nfunction exercicesPourcentagesConversion () {\n  const liste = []\n  const listeTexte = []\n  const listeFractionsSimples = ['1/2', '1/4', '3/4', '1/10', '1/5', '2/5', '3/5', '4/5', '3/10', '7/10', '9/10']\n  liste.push(fraction(choice(listeFractionsSimples)))\n  const k = randint(2, 19)\n  listeTexte.push(String.raw`\\dfrac{${liste[0].n * k}}{${liste[0].d * k}}`)\n  liste.push(fraction(randint(1, 9), 10))\n  listeTexte.push(num(liste[1].valueOf()))\n  liste.push(fraction(randint(0, 9), 10).add(fraction(randint(0, 9), 100).add(fraction(randint(1, 9), 1000))))\n  listeTexte.push(num(liste[2].valueOf()))\n  const listeEntiere = String.raw`$ {\\color{red}a.}~${listeTexte[0]}$\n  $\\quad {\\color{red}b.}~${listeTexte[1]}$\n  $\\quad {\\color{red}c.}~${listeTexte[2]}$\n  `\n  const texte = `Sans calculatrice, convertir en pourcentages les nombres de la liste suivante.\n  <br>\n  ${listeEntiere}\n  `\n  const solution = {\n    calculs: `${etapesSimplificationFraction(liste[0].n * k, liste[0].d * k, '', 0, false)}$=${num(liste[0])}=${num(liste[0].mul(100))}\\\\%$`,\n    reponse: `$${fraction2Tex(liste[0], true)}$`\n  }\n  const texteCorr = String.raw`\n  $ {\\color{red}a.}~$ ${solution.calculs}\n  <br>\n  $ {\\color{red}b.}~${listeTexte[1]}=${listeTexte[1]}0=${num(liste[1].mul(100))}\\% \\quad {\\color{red}c.}~${listeTexte[2]}=${num(liste[2].mul(100))}\\%$\n  `\n  return { texte, texteCorr }\n}\n/**\n * Calculs de fréquences, probabilités, ratios\n * @author Frédéric PIOU\n * Référence\n*/\n\nexport default function CalculsProbabilites () {\n  Exercice.call(this)\n  this.consigne = ''\n  this.nbQuestions = 10\n  this.nbCols = 0\n  this.nbColsCorr = 0\n  this.tailleDiaporama = 1\n  this.video = ''\n  this.correctionDetailleeDisponible = true\n  this.correctionDetaillee = true\n  context.isHtml ? (this.spacing = 2.5) : (this.spacing = 0)\n  context.isHtml ? (this.spacingCorr = 2.5) : (this.spacingCorr = 0)\n  this.sup = 'all' // Type d'exercice\n  this.besoinFormulaireNumerique = [\n    'Type de questions', 9, [\n      '0 : Mélange des types de questions',\n      '1 : Calculer une fréquence à partir du diagramme des effectifs (valeur exacte).',\n      '2 : Calculer une fréquence à partir du diagramme des effectifs (valeur approchée).',\n      '3 : Calculer une fréquence à partir du diagramme des effectifs (pourcentage).',\n      '4 : Calcul d\\'une probabilité à partir d\\'un ratio.',\n      '5 : Calcul d\\'un probabilité à partir de pobabilités.',\n      '6 : Expérience à deux épreuves (avec remise) : Calcul d\\'une probabilité à partir de ratios.',\n      '7 : Expérience à deux épreuves différentes : Calcul d\\'une probabilité à partir de ratios.',\n      '8 : Diagramme des effectifs : Utilisation de la stabilistation des fréquences.',\n      '9 : Simplifier un ratio.',\n      '10 : Convertir un nombre en pourcentages.'\n    ].join('\\n')\n  ]\n  this.nouvelleVersion = function () {\n    this.listeQuestions = [] // Liste de questions\n    this.listeCorrections = [] // Liste de questions corrigées\n    this.autoCorrection = [] // À placer même si l'exercice n'a pas vocation à être corrigé\n    for (let i = 0, exercice, cpt = 0; i < this.nbQuestions && cpt < 50;) { // Boucle principale où i+1 correspond au numéro de la question\n      const nquestion = this.sup === 'all' ? randint(1, 10) : this.sup\n      switch (nquestion) {\n        case 1:\n          exercice = diagrammeCalculsFrequences(0)\n          break\n        case 2:\n          exercice = diagrammeCalculsFrequences(1)\n          break\n        case 3:\n          exercice = diagrammeCalculsFrequences(2)\n          break\n        case 4: {\n          exercice = ratiosCalculsProbabilites()\n          break\n        }\n        case 5: {\n          exercice = probabilitesCalculsRatios()\n          break\n        }\n        case 6: {\n          exercice = ratios2EpreuvesCalculsProbabilites()\n          break\n        }\n        case 7: {\n          exercice = ratioPiece2EpreuvesCalculsProbabilites()\n          break\n        }\n        case 8: {\n          exercice = diagrammeEffectifsCalculsLoiGrandNombre()\n          break\n        }\n        case 9: {\n          exercice = exerciceSimplificationRatios()\n          break\n        }\n        case 10: {\n          exercice = exercicesPourcentagesConversion()\n          break\n        }\n      }\n      // Fin Probabilites\n      if (this.questionJamaisPosee(i, nquestion)) {\n        this.listeQuestions.push(exercice.texte)\n        this.listeCorrections.push(exercice.texteCorr)\n        i++\n      }\n      cpt++\n    }\n    listeQuestionsToContenu(this) // On envoie l'exercice à la fonction de mise en page\n  }\n}\n"],"names":["listeEntiersSommeConnue","nbElements","total","valMin","liste","randint","j","titre","dateDePublication","fraction2Tex","fraction","signe","num","graphique","hauteursBarres","etiquettes","reperageTraitPointille","couleurDeRemplissage","titreAxeVertical","hauteurDiagramme","coeff","axeVertical","etiquetteValeur","labelAxeVert","diagramme","diagrammeBarres","mathalea2d","fixeBordures","listeExhaustive","univers","ratios","indices","issues","combinaisonListes","issuesAbregees","i","listIndex","idx","index","simulationExperienceAlaetoire","nbEssais","effectifs","realisees","issue","refIssue","frequences","etapesSimplificationFraction","n","d","A","methode","aligned","etapes","p","gcd","netapes","diagrammeCalculsFrequences","typeReponseAttendue","urne","totalRatios","sum","experience","issuesReordonnees","diagrammeEffectifs","choixRef","choice","posRef","choixIssue","remarque","solution","environ","approchee","round","approx","texte","texteCorr","ratiosCalculsProbabilites","choixRatio","plurielsIssues","probabilitesCalculsRatios","compteurSimplifications","simplifications","isPrime","probabilites","ratios2EpreuvesCalculsProbabilites","evenement","lignes","k","corrProba","issuesquirealisent","ratioPiece2EpreuvesCalculsProbabilites","urne1","urne2","totalRatios1","totalRatios2","ratios1","ratios2","issues1","issues2","diagrammeEffectifsCalculsLoiGrandNombre","exerciceSimplificationRatios","matrix","divide","kratios","multiply","listeDecompositions","decompositionFacteursPremiers","introduction","exercicesPourcentagesConversion","listeTexte","listeFractionsSimples","CalculsProbabilites","Exercice","context","exercice","cpt","nquestion","listeQuestionsToContenu"],"mappings":"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"}