This repository has been archived by the owner on May 11, 2021. It is now read-only.
/
addition_rule_of_probability.html
106 lines (98 loc) · 7.08 KB
/
addition_rule_of_probability.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
<!DOCTYPE html>
<html data-require="math math-format probability word-problems stat">
<head>
<meta charset="UTF-8" />
<title>Addition rule of probability</title>
<script src="../khan-exercise.js"></script>
<script type="text/javascript">
function enFunc(innerString, usePercentages) {
if (usePercentages)
return "<code>P(</code>" + innerString + "<code>)</code>";
else
return "<code>\\lvert</code>" + innerString + "<code>\\rvert</code>";
}
</script>
</head>
<body>
<div class="exercise">
<div class="problems">
<div>
<div class="vars">
<var id="VARINDX_X, VARINDX_Y, VARINDX_X_OR_Y, VARINDX_X_AND_Y">[0, 1, 2, 3]</var>
<var id="CHOOSE_ATTRIBUTES">
function( attrChoices1, attrChoices2 ) {
att1 = randFromArray( attrChoices1 );
att2 = randFromArray( attrChoices2 );
return [ att1, att2, att1 + " or " + att2, att1 + " and " + att2 ];
}
</var>
<var id="MIXTEST">[ "baseline", MIXER( ["blue"], ["hot"] ), "endline" ]</var>
<var id="INTRO, VARDESC, QSTNPRETEXT, QSTNPOSTTEXT, USEPERCENTAGES">
<!-- Put each question in the following structure: [INTRO, [X DESC, Y DESC, X_OR_Y DESC, X_AND_Y DESC], QSTNPRETEXT, QSTNPOSTTEXT, USEPERCENTAGES] -->
randFromArray([
["A local store ran a sale on two items, a watch and a shirt. There were ", ["customers who bought a watch", "customers who bought a shirt", "customers who bought a watch or a shirt", "customers who bought a watch and a shirt"], "What was the number of ", "?", false],
["A study group at a nearby high school has ", ["sophomores", "girls", "students who are a sophomore or a girl", "sophomore girls"], "How many ", " are there at the school?", false],
["In a sample of patients, ", CHOOSE_ATTRIBUTES( ["male", "female"], ["colorblind", "overweight", "underweight", "over sixty", "healthy", "under eighteen", "healthy"] ), "What percentage of the patients are ", "?", true],
["Of the houses in a town, ", CHOOSE_ATTRIBUTES( ["white", "blue", "light green", "solar powered", "near a park"], ["air conditioned", "wooden", "stucco"] ), "What percentage of the houses are ", "?", true],
["A census was recently taken in a certain community, and the results include the following facts about the residents: ", CHOOSE_ATTRIBUTES( ["Hispanic", "Asian", "White", "Black"], ["male", "female", "under 18", "over 65"] ), "What percentage of the residents are ", "?", true],
["A car dealer advertises statistics desribing her inventory. Of the cars on her lot, the advertisement states ", CHOOSE_ATTRIBUTES( ["white", "blue", "light green", "red", "grey", "black"], ["trucks", "minivans", "SUVs", "sports cars", "sedans"] ), "What percentage of the cars are ", "?", true],
])
</var>
<!-- Randomize the order the variables (X, Y, X_OR_Y, X_AND_Y) are written in the question -->
<var id="ORDER">shuffle( [0, 1, 2, 3] )</var>
<!-- Assign values to each variable, subject to constraints so all counts are > 1 and no counts are negative -->
<var id="VARVALS">
( function( usePercentages ) {
var rangemin = usePercentages ? 1 : 2;
var rangemax = usePercentages ? 100 : 10;
var vals = [0, 0, 0, 0];
vals[VARINDX_X] = randRange( rangemin, rangemax );
vals[VARINDX_Y] = randRange( rangemin, rangemax );
vals[VARINDX_X_AND_Y] = randRange( max( rangemin, vals[VARINDX_X]+vals[VARINDX_Y]-100 ), min( vals[VARINDX_X], vals[VARINDX_Y] ) );
vals[VARINDX_X_OR_Y] = vals[VARINDX_X] + vals[VARINDX_Y] - vals[VARINDX_X_AND_Y];
return vals;
} )( USEPERCENTAGES )
</var>
<var id="QUESTIONTEXT">
( function() {
var optionalPercentage = USEPERCENTAGES ? "% are " : " ";
var qstn = INTRO;
for (var i=0; i< ORDER.length-1; i++) {
qstn += (i===ORDER.length-2) ? " and " : "";
qstn += VARVALS[ORDER[i]] + optionalPercentage + VARDESC[ORDER[i]];
qstn += (i< ORDER.length-2) ? ", " : ". ";
}
qstn += QSTNPRETEXT + VARDESC[ORDER[ORDER.length-1]] + QSTNPOSTTEXT;
return qstn;
} )()
</var>
<!-- this just passes the call to plain JS to avoid problems with unescaped HTML in the function body, while still giving access to vars -->
<var id="ENFUNC"> function (innerString) { return enFunc(innerString, USEPERCENTAGES); } </var>
</div>
<div class="question"><p><var>QUESTIONTEXT</var></p></div>
<div class="solution"><var>VARVALS[ORDER[ORDER.length-1]]</var></div>
<div class="hints">
<p>Remember the addition rule of probability: <code>P(A\cup B) = P(A) + P(B) - P(A\cap B)</code></p>
<p data-if="USEPERCENTAGES === false">Because the denominator of the fraction for each probability is the same, for convenience we can also just use cardinality (the number of items in each category) instead of probability: <code>|A\cup B| = |A|+ |B| - |A\cap B|</code></p>
<!-- substitute english descriptions for variables -->
<p>Substituting variables, <var>ENFUNC(VARDESC[2])</var> = <var>ENFUNC(VARDESC[0])</var> + <var>ENFUNC(VARDESC[1])</var> - <var>ENFUNC(VARDESC[3])</var></p>
<!-- rearrange the unknown to the left hand side IF it wasn't already -->
<p data-if="ORDER[ORDER.length-1] === 0">Rearranging, <var>ENFUNC(VARDESC[0])</var> = <var>ENFUNC(VARDESC[3])</var> + <var>ENFUNC(VARDESC[2])</var> - <var>ENFUNC(VARDESC[1])</var></p>
<p data-if="ORDER[ORDER.length-1] === 1">Rearranging, <var>ENFUNC(VARDESC[1])</var> = <var>ENFUNC(VARDESC[3])</var> + <var>ENFUNC(VARDESC[2])</var> - <var>ENFUNC(VARDESC[0])</var></p>
<p data-if="ORDER[ORDER.length-1] === 3">Rearranging, <var>ENFUNC(VARDESC[3])</var> = <var>ENFUNC(VARDESC[0])</var> + <var>ENFUNC(VARDESC[1])</var> - <var>ENFUNC(VARDESC[2])</var></p>
<!-- substitue vals for vars on RHS -->
<p data-if="ORDER[ORDER.length-1] === 0"><var>ENFUNC(VARDESC[0])</var> = <code><var>VARVALS[3]</var> + <var>VARVALS[2]</var> - <var>VARVALS[1]</var></code>
<p data-if="ORDER[ORDER.length-1] === 1"><var>ENFUNC(VARDESC[1])</var> = <code><var>VARVALS[3]</var> + <var>VARVALS[2]</var> - <var>VARVALS[0]</var></code>
<p data-if="ORDER[ORDER.length-1] === 2"><var>ENFUNC(VARDESC[2])</var> = <code><var>VARVALS[0]</var> + <var>VARVALS[1]</var> - <var>VARVALS[3]</var></code>
<p data-if="ORDER[ORDER.length-1] === 3"><var>ENFUNC(VARDESC[3])</var> = <code><var>VARVALS[0]</var> + <var>VARVALS[1]</var> - <var>VARVALS[2]</var></code>
<!-- give the final answer -->
<p data-if="ORDER[ORDER.length-1] === 0"><var>ENFUNC(VARDESC[0])</var> = <code><var>VARVALS[3] + VARVALS[2] - VARVALS[1]</var></code>
<p data-if="ORDER[ORDER.length-1] === 1"><var>ENFUNC(VARDESC[1])</var> = <code><var>VARVALS[3] + VARVALS[2] - VARVALS[0]</var></code>
<p data-if="ORDER[ORDER.length-1] === 2"><var>ENFUNC(VARDESC[2])</var> = <code><var>VARVALS[0] + VARVALS[1] - VARVALS[3]</var></code>
<p data-if="ORDER[ORDER.length-1] === 3"><var>ENFUNC(VARDESC[3])</var> = <code><var>VARVALS[0] + VARVALS[1] - VARVALS[2]</var></code>
</div>
</div>
</div>
</div>
</body>
</html>