Zufall: Der unsichtbare Mitspieler
Die meisten Spiele basieren auf dem Zufall: Zufällige Dinge entziehen sich menschlichem Planen und lassen uns - je nach Ergebnis - im Spiel frohlocken oder verzweifeln.
Das wohl älteste Instrument, das dazu dient, im Spiel den Zufall walten zu lassen, ist der Würfel. Mit Würfeln gespielt wird buchstäblich seit Tausenden von Jahren: Iranische Archäologen haben 5000 Jahre alte Knochenwürfel ausgegraben – in den Ruinen von Shahr-e Sokhta, wörtlich «verbrannte Stadt». Diese prähistorischen Würfel tragen schon Bohrungen in Form unserer heutigen Augen, und sie gehören zu einem altiranischen Brettspiel, das ebenfalls seinen Weg auf unsere Spieltische gefunden hat: Im Mittelalter nannte man es Wurfzabel, später Pasch, Tricktrack oder Puff – und heute Backgammon.
Das Werkzeug des Zufalls
Würfel als das Instrument des Zufalls lassen sich auch am Computer programmieren. Allerdings nur fast: Während in der Realität das Würfelergebnis nicht vorhersehbar ist – eben zufällig oder, in der Fachsprache, sogenannt nichtdeterministisch –, kann der Computer scheinbar zufällige Zahlen errechnen, die auf teils sehr komplizierten Algorithmen beruhen, die aber, weil mit Formeln errechnet, immer reproduzierbar und eben deterministisch sind. Mit anderen Worten: Den echten, zufälligen Zufall gibt es allein in der Natur.
Nichtsdestoweniger beruhen Computergames, wie die meisten anderen Spiele auch, auf dem Prinzip Zufall. Ob es ums Verhalten einer gegnerischen Figur in «World of Warcraft» geht oder auch nur um die Anordnung der Spielsteine auf dem chinesischen Solitärspiel «Mahjongg Solitaire»: Immer ist der mathematische Pseudozufall am Werk. Und der geht so: Die meisten Programmiersprachen kennen den Befehl
random();
der eine scheinbar zufällige Zahl zwischen 0 und 1 erzeugt - mit in der Regel zehn Nachkommastellen. Den Rest erledigt der Programmierer. Im Computerwürfel oben rechts sieht das so aus:
for (i=0; i<2; i++)
{
j=Math.random();
if (j<1/6) wert[i]=1;
else if (j<2/6) wert[i]=2;
else if (j<3/6) wert[i]=3;
else if (j<4/6) wert[i]=4;
else if (j<5/6) wert[i]=5;
else wert[i]=6;
}
Auf Deutsch übersetzt heisst das: Für beide Würfel errechnet der Computer je eine Zufallszahl, die in der Variablen j gespeichert wird. Ist diese kleiner als ein Sechstel, erhält der Würfel den Wert eins; liegt sie zwischen einem und zwei Sechsteln, den Wert zwei und so weiter. Und fertig ist der Computerwürfel - ein Klick auf die beiden Würfelchen oben rechts würfelt also, nach den Begriffen des Computers, sozusagen zufällig.
Etwas komplizierter, wenn auch im Grundsatz genau gleich, funktioniert die zufällige Anordnung der chinesischen Spielsteine im Spiel unten: Ein Klick auf «Neu» ordnet die Spielsteine neu an; die Wahrscheinlichkeit, dass exakt dieselbe Anordnung zweimal «erwürfelt» wird, ist bei den insgesamt 144 Mahjongg-Steinen geradezu unvorstellbar klein: Sie beträgt 1/1.1394912*10^200. Auf gut Deutsch: Zweimal dasselbe Spiel zu erhalten, ist absolut unmöglich - oder jedenfalls fast so unmöglich wie die sichere Voraussage eines Würfelergebnisses.
Thomas Weibel
Weiterführende Links zum Beitrag:
- True-random.org: Physikalische Abhandlung über echte Zufallszahlengeneratoren
- Random.org: Webbasierter echter Zufallszahlengenerator
- EducETH.ch: Werkstatt nicht-echter Zufallszahlengenerator im Eigenbau
- Mah-jongg.ch: Sammlung auf nicht-echtem Zufall basierender Webspiele
- Mah-jongg.ch: Bauplan des untenstehenden Computerwürfels
