57 lines
1.4 KiB
Plaintext
57 lines
1.4 KiB
Plaintext
IntList drawers = new IntList();
|
|
int trials = 100000;
|
|
int succes_count;
|
|
|
|
void setup() {
|
|
for (int i = 0; i < 100; i++) {
|
|
drawers.append(i);
|
|
}
|
|
println(trials + " trials\n");
|
|
|
|
//Random strategy
|
|
println("Random strategy");
|
|
succes_count = trials;
|
|
for (int i = 0; i < trials; i++) {
|
|
drawers.shuffle();
|
|
for (int prisoner = 0; prisoner < 100; prisoner++) {
|
|
boolean found = false;
|
|
for (int attempt = 0; attempt < 50; attempt++) {
|
|
if (drawers.get(int(random(drawers.size()))) == prisoner) {
|
|
found = true;
|
|
break;
|
|
}
|
|
}
|
|
if (!found) {
|
|
succes_count--;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
println(" Succeses: " + succes_count);
|
|
println(" Succes rate: " + 100.0 * succes_count / trials + "%\n");
|
|
|
|
//Optimal strategy
|
|
println("Optimal strategy");
|
|
succes_count = trials;
|
|
for (int i = 0; i < trials; i++) {
|
|
drawers.shuffle();
|
|
for (int prisoner = 0; prisoner < 100; prisoner++) {
|
|
boolean found = false;
|
|
int next = prisoner;
|
|
for (int attempt = 0; attempt < 50; attempt++) {
|
|
next = drawers.get(next);
|
|
if (next == prisoner) {
|
|
found = true;
|
|
break;
|
|
}
|
|
}
|
|
if (!found) {
|
|
succes_count--;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
println(" Succeses: " + succes_count);
|
|
print(" Succes rate: " + 100.0 * succes_count / trials + "%");
|
|
}
|