Commit a2d70b4e authored by Dominikus Herzberg's avatar Dominikus Herzberg

Zufallskreuze

parent 15cc2827
......@@ -141,10 +141,72 @@ Im Deutschen ist mit Multiple-Choice-Test schlicht ein Antwort-Wahl-Verfahren ge
Schreiben Sie zur Beantwortung der folgenden Fragen ein Programm, mit dem Sie die verschiedene Fälle simulieren können.
=== Reine Zufallskreuze
=== Zufallskreuze machen
Angenommen, Sie sind unglücklicherweise nicht auf den Test vorbereitet. Wie viele Punkte erhalten Sie im Schnitt, wenn Sie zufällig Kreuze setzen?
include::preDetailsSolution.adoc[]
Da Sie nicht wissen, ob ein, zwei, drei oder vier Kreuze richtig sind, müssen wir für jeden dieser mit einem Viertel gewichteten Fälle ausrechnen, was es bedeutet, ein, zwei, drei oder vier Kreuze zu setzen. Man kommt im Mittel auf 10.4%.
----
jshell> new MC(4,1,1,4).run(1_000_000)
$35 ==> 0.062644
jshell> new MC(4,2,1,4).run(1_000_000)
$36 ==> 0.041609
jshell> new MC(4,3,1,4).run(1_000_000)
$37 ==> 0.06242
jshell> new MC(4,4,1,4).run(1_000_000)
$38 ==> 0.249505
jshell> ($35 + $36 + $37 + $38)/4
$39 ==> 0.10404450000000001
----
Schließt man aus, dass Fälle mit vier korrekten Antworten vorkommen, dann sinkt die Wahrscheinlichkeit eines Zufallstreffers ab auf 7.4%.
----
jshell> new MC(4,1,1,3).run(1_000_000)
$40 ==> 0.082814
jshell> new MC(4,2,1,3).run(1_000_000)
$41 ==> 0.055447
jshell> new MC(4,3,1,3).run(1_000_000)
$42 ==> 0.083462
jshell> ($40 + $41 + $42)/3
$43 ==> 0.07390766666666666
----
Ist bekannt, dass nur ein oder zwei Antworten korrekt sind, kommt man auf 10.4%.
----
jshell> new MC(4,1,1,2).run(1_000_000)
$44 ==> 0.124957
jshell> new MC(4,2,1,2).run(1_000_000)
$45 ==> 0.083298
jshell> ($44 + $45)/2
$46 ==> 0.1041275
----
Und geht man davon aus, dass nur eine Antwort korrekt ist, dann wählt man zu 25% die richtige Antwort.
----
jshell> new MC(4,1,1,1).run(1_000_000)
$47 ==> 0.249135
----
Es scheint also sinnvoll zu sein, MC-Fragen zu stellen, für die man ein bis drei mögliche Antworten ankündigt. Das gilt aber nur, wenn man das statistisch gesehen auch durchzieht. Praktisch ist es nicht leicht, Fragen zu entwerfen, bei denen auch mal drei Antworten richtig sind, ohne dass die Antworten offensichtlich sind.
include::postDetails.adoc[]
=== Zufallskreuze schlau gemacht
Ist es so schlau, rein zufällig Kreuze zu setzen? Sie lesen die Antworten zu den Fragen durch und stellen fest, dass sich manche Antworten ausschließen -- das kann man rausfinden, ohne etwas von der Thematik zu verstehen. Sie kommen zu dem Schluss, dass bei sieben der zehn Aufgaben nur eine oder zwei Antworten richtig sein können, und dass bei den restlichen drei Aufgaben ein, zwei oder drei Antworten richtig sein können.
......@@ -197,4 +259,60 @@ Die Methode `run` führt eine Simulation mehrfach durch und gibt den prozentuale
include::{sourcedir}/multipleChoice.java[tag=run]
----
Erproben wir die Richtigkeit bzw. die Plausibilität des Programms.
Angenommen, es gibt unter vier Fragen nur exakt eine korrekte Antwort, dann muss jemand, der zufällig ein Kreuz macht, diese Lösung mit einer Wahrscheinlichkeit von 25% richtig ankreuzen:
----
jshell> new MC(4,1,1,1).run(1_000_000)
$21 ==> 0.250007
----
Wenn man glaubt, dass auch zwei Kreuze möglich seien, dann veringert man die Wahrscheinlichkeit für eine richtige Lösung um die Hälfte (12.5%). Glaubt man, dass auch drei oder gar vier Kreuze richtig sein könnten, dann sind es nur ein Drittel bzw. ein Viertel von 25%, d.h. 8.3% bzw. 6.25%.
----
jshell> new MC(4,1,1,2).run(1_000_000)
$22 ==> 0.125209
jshell> new MC(4,1,1,3).run(1_000_000)
$23 ==> 0.083344
jshell> new MC(4,1,1,4).run(1_000_000)
$24 ==> 0.062426
----
Übrigens ist ein Gegencheck sinnvoll: Wenn bekannt ist, dass eine Antwort richtig ist (25%-Treffer), dann entspricht das der Aufgabe, bei bekannten drei richtigen Antworten die _eine_ falsche Antwort herauszusuchen. Unser Code muss das gleiche Ergebnis (wieder 25%) ausspucken:
----
jshell> new MC(4,3,3,3).run(1_000_000)
$48 ==> 0.249943
----
Angenommen, es gibt unter vier Fragen genau zwei korrekte Antworten, dann findet jemand, der zufällig zwei Kreuze macht, die Lösung in einem von sechs Fällen (1+2, 1+3, 1+4, 2+3, 2+4, 3+4), d.h. zu 16.6%.
----
jshell> new MC(4,2,2,2).run(1_000_000)
$25 ==> 0.166534
----
Die Zahl halbiert, drittelt bzw. viertelt sich, wenn man annimmt, auch nur ein Kreuz, drei bzw. vier Kreuze seien korrekt (8.3%, 5.6%, 4.1%).
----
jshell> new MC(4,2,1,2).run(1_000_000)
$26 ==> 0.083589
jshell> new MC(4,2,1,3).run(1_000_000)
$27 ==> 0.055681
jshell> new MC(4,2,1,4).run(1_000_000)
$28 ==> 0.041824
jshell> new MC(4,2,2,3).run(1_000_000)
$29 ==> 0.083615
jshell> new MC(4,2,2,4).run(1_000_000)
$30 ==> 0.05588
----
include::postDetails.adoc[]
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment