<p>
</p>
<p>Really? Monte carlo? You can write brute force really quickly and it’s tractable for n = 7:</p>
<p>
</p>
<h1>include <iostream></iostream></h1>
<p>using namespace std;</p>
<p>double prb[] = {.352, .28, .233, .092, .23, .268, .214};
int N = 7;</p>
<p>int main() {
double ret[N+1];
memset(ret, 0, sizeof(ret));
for (int i = 0; i < (1 << N); ++i) {
int j = i, schools = 0;
double p = 1;
for (int k = 0; k < N; ++k, j/=2) {
if (j % 2) {
schools++;
p *= prb[k];
} else {
p *= (1.0 - prb[k]);
}
}
ret[schools] += p;
}</p>
<p>for (int i = 0; i <= N; ++i) {
cout << "ridiculously flawed prb of exactly " << i << " is " << ret* << endl;
}
}
</p>
<p>output
$ ./srslywhat
ridiculously flawed prb of exactly 0 is 0.14395
ridiculously flawed prb of exactly 1 is 0.327385
ridiculously flawed prb of exactly 2 is 0.311374
ridiculously flawed prb of exactly 3 is 0.160212
ridiculously flawed prb of exactly 4 is 0.0479807
ridiculously flawed prb of exactly 5 is 0.00830908
ridiculously flawed prb of exactly 6 is 0.000761542
ridiculously flawed prb of exactly 7 is 2.7869e-05</p>