import Exercice from '../../Exercice.js'
import { mathalea2d } from '../../../modules/2dGeneralites.js'
import { listeQuestionsToContenu, randint } from '../../../modules/outils.js'
import { number } from 'mathjs'
import { Arbre, texProba } from '../../../modules/arbres.js'
import { ajouteChampTexteMathLive } from '../../../modules/interactif/questionMathLive.js'
import { setReponse } from '../../../modules/gestionInteractif.js'
import { context } from '../../../modules/context.js'
export const titre = 'Calculer des probabilités à partir d’un arbre'
export const dateDePublication = '25/12/2021'
export const interactifReady = true
export const interactifType = 'mathLive'
export const amcReady = true
export const amcType = 'AMCNum'
/**
* On donne un arbre de probabilité et on doit calculer une probabilité partielle manquante
* @author Jean-Claude Lhote
* Référence can2P03
*/
export const uuid = 'd15f3'
export const ref = 'can1P04'
export default function CalculProbaArbre2e () {
Exercice.call(this) // Héritage de la classe Exercice()
this.sup = true
this.consigne = ''
this.nbQuestions = 1
this.nbCols = 1 // Uniquement pour la sortie LaTeX
this.nbColsCorr = 1 // Uniquement pour la sortie LaTeX
// this.sup = 1; // Niveau de difficulté
this.tailleDiaporama = 2 // Pour les exercices chronométrés. 50 par défaut pour les exercices avec du texte
this.video = '' // Id YouTube ou url
this.nouvelleVersion = function () {
this.listeQuestions = [] // Liste de questions
this.listeCorrections = [] // Liste de questions corrigées
this.autoCorrection = []
for (let i = 0, cpt = 0, pA, pB, pAC, pBC, omega, texte, texteCorr, objets, pC; i < this.nbQuestions && cpt < 50;) {
objets = []
// On choisit les probas de l'arbre
pA = number(randint(2, 8) / 10)
pB = number(1 - pA)
pAC = number(randint(2, 8) / 10)
pBC = number(randint(2, 8) / 10)
// On définit l'arbre complet
omega = new Arbre({
racine: true,
rationnel: false,
nom: '',
proba: 1,
visible: false,
alter: '',
enfants: [
new Arbre(
{
rationnel: false,
nom: 'A',
proba: pA,
enfants: [new Arbre(
{
rationnel: false,
nom: 'C',
proba: pAC
}),
new Arbre(
{
rationnel: false,
nom: '\\bar C',
proba: number(1 - pAC)
})
]
}),
new Arbre({
rationnel: false,
nom: '\\bar A',
proba: number(1 - pA),
enfants: [new Arbre({
rationnel: false,
nom: 'C',
proba: pBC,
visible: false,
alter: 'x'
}),
new Arbre({
rationnel: false,
nom: '\\bar C',
proba: number(1 - pBC),
visible: false,
alter: ''
})
]
})
]
})
omega.setTailles() // On calcule les tailles des arbres.
objets = omega.represente(0, 6, 0, 1.5, true, 1) // On crée l'arbre complet echelle 1.4 feuilles verticales sens gauche-droite
pC = omega.getProba('C', false) // on calcule P(C) décimale.
texte = `On donne l'arbre de probabilités ci dessous et $P(C)=${texProba(pC)}$.<br>
`
texte += mathalea2d({ xmin: -0.1, xmax: 14, ymin: 0, ymax: 6, style: 'inline' }, ...objets)
texte += `<br>
$x=$ ${(this.interactif || !context.isHtml) ? ajouteChampTexteMathLive(this, i, 'largeur10 inline') : '\\ldots'}`
texteCorr = 'Comme $A$ et $\\bar A$ forment une partition de l\'univers, d\'après la loi des probabilités totales :<br>'
texteCorr += '$P(C)=P(A \\cap C)+P(\\bar{A} \\cap C)$.<br>'
texteCorr += `Or $P(\\bar{A} \\cap C)=P(\\bar{A}) \\times P_{\\bar{A}}(C)=${texProba(pB, false)}x$.<br>`
texteCorr += `Donc $${texProba(pB, false)}x=P(C)-P(A \\cap C)=${texProba(pC, false)}-${texProba(pA, false)}\\times ${texProba(pAC, false)}=${texProba(pC, false)}-${texProba(pA * pAC, false)}=${texProba(pC - pA * pAC, false)}$.<br>`
texteCorr += `Donc $x=\\dfrac{${texProba(pC - pA * pAC, false)}}{${texProba(pB, false)}}=${texProba(pBC)}$`
setReponse(this, i, pBC)
this.canEnonce = `On donne l'arbre de probabilités ci dessous et $P(C)=${texProba(pC)}$.<br>
`
this.canEnonce += mathalea2d({ xmin: -0.1, xmax: 14, ymin: 0, ymax: 6, style: 'inline', scale: 0.5 }, ...objets)
this.canReponseACompleter = `
$x=\\ldots$ `
if (this.questionJamaisPosee(i, pA, pAC, pBC)) {
this.listeQuestions.push(texte)
this.listeCorrections.push(texteCorr)
i++
}
cpt++
}
listeQuestionsToContenu(this)
}
this.besoinFormulaireCaseACocher = ['Proba rationnelle', true]
}