← Neuigkeiten

Wie wir die Würfel werfen — und warum das fair ist

Sind Online-Backgammon-Würfel manipuliert? So genau erzeugt unser Server jeden Wurf: kryptografisch, ohne Bias, mit denselben Chancen wie echte Würfel.

technical 18. Juni 2026

Fangen wir mit der Frage an, die sich jeder Online-Backgammon-Spieler schon mindestens einmal gestellt hat — meistens direkt nach einer 6-1, als alles andere besser gewesen wäre: sind die Würfel manipuliert?

Diese Skepsis ist berechtigt. Statt dir also „vertrau uns einfach” zu sagen, zeigen wir dir ganz genau, wie unsere Würfel funktionieren — in klaren Worten für alle und mit dem echten Code für die Skeptiker, die beruflich Software schreiben. Am Ende weißt du über unsere Würfel mehr als über die hölzernen in deiner Schublade.

Die Würfel fallen auf dem Server, nicht auf deinem Handy

Wenn du auf „Würfeln” tippst, entscheidet dein Gerät gar nichts. Es schickt eine Anfrage an unseren Server, der Server erzeugt die Würfel und schickt das Ergebnis zurück. Das Ergebnis steht in dem Moment fest, in dem es erzeugt wird.

Das klingt zunächst weniger vertrauenswürdig — „Moment, ihr würfelt?” — ist aber genau das Gegenteil. Würden die Würfel auf deinem Handy oder im Browser erzeugt, könnte eine manipulierte App einfach würfeln, was sie will. Pasch in jeder Runde. Indem wir das Würfeln auf einem Server bündeln, den wir kontrollieren und prüfen können, kann kein Beteiligter die Würfel beeinflussen — weder du noch dein Gegner noch wir mitten im Spiel.

Vorhersehbarer vs. kryptografischer Zufall

Genau hier laufen die meisten „Zufalls”-Generatoren still und leise schief.

Viele Programmiersprachen liefern eine Standard-Zufallsfunktion mit, die schnell, aber vorhersehbar ist. Sie startet bei einer einzigen Zahl (einem „Seed”) und erzeugt daraus eine feste Folge. Wer den Seed kennt — oder einfach genug Würfe beobachtet — kann anfangen vorherzusagen, was als Nächstes kommt. Für ein Wettkampfspiel, bei dem Punkte und Stolz auf dem Spiel stehen, ist das inakzeptabel.

So einen Generator nutzen wir nicht. Wir nutzen crypto/rand aus Go — dieselbe Art von Zufall, mit der Verschlüsselungsschlüssel erzeugt werden, die den Bankverkehr schützen. Er stammt aus dem Entropie-Pool des Betriebssystems, lässt sich nicht „seeden” und nicht aus vergangenen Würfen vorhersagen. Es gibt keine versteckte Folge zum Rückwärtsrechnen, weil es keine Folge gibt.

Ein paar Details für die mitlesenden Entwickler, gültig zu Go 1.26 (die Sprache, in der unser Backend läuft):

  • Die Zufallsquelle kann nicht heimlich gegen eine schwächere getauscht werden. Seit Go 1.26 wird immer eine sichere, vom Betriebssystem gestützte Quelle verwendet; nichts in unserem Code oder unseren Abhängigkeiten kann sie still herabstufen.
  • Es gibt kein Zurückfallen auf erratbare Werte. Sollte die Entropiequelle des Systems je ausfallen — praktisch unmöglich — stürzt das Programm komplett ab, statt mit schlechtem Zufall weiterzulaufen. Im schlimmsten Fall stoppt das Spiel, niemals betrügt es.

Die subtile Falle: der Modulo-Bias

Diesen Teil hört kaum jemand, und genau hier entstehen „fast faire” Würfel.

Computer erzeugen Zufall als rohe Bytes — Zahlen von 0 bis 255. Der naive Weg, daraus einen Würfelwurf zu machen, ist der Rest der Division durch 6 („Modulo 6”). Sieht korrekt aus. Ist es nicht. Der Bereich 0–255 teilt sich nicht gleichmäßig in sechs Gruppen, also kommen ein paar Augenzahlen etwas öfter vor als die anderen. Ein winziger, dauerhafter, unsichtbarer Bias — der über Millionen Würfe statistisch real wird. Das ist der Unterschied zwischen fairen und leicht gezinkten Würfeln.

Wir vermeiden ihn vollständig. Statt der Rest-Abkürzung ziehen wir mit crypto/rand.Int eine einzige gleichverteilte Zahl über alle 36 möglichen Würfelkombinationen. Darunter steckt Rejection Sampling: Die „überzähligen” Werte, die das Ergebnis verzerren würden, werden stillschweigend verworfen, sodass das, was übrig bleibt, mathematisch gleichverteilt ist. Jedes der 36 Ergebnisse ist exakt gleich wahrscheinlich. Kein Rest, kein Bias.

Der echte Code

Wir verlangen nicht, dass du uns das aufs Wort glaubst. Das ist der echte Mechanismus (Go 1.26):

package dice

import (
	"crypto/rand"
	"math/big"
)

// cryptoRoll returns the dice for a single backgammon roll.
// Each of the 36 combinations is exactly equally likely, with no modulo bias.
// Doubles return four moves; a normal roll returns two.
func cryptoRoll() []int {
	// One unbiased draw over all 36 combinations [0, 36).
	// rand.Int uses crypto/rand (secure, OS-backed) and rejects the
	// leftover values internally, so every outcome is equally likely.
	// On Go 1.24+, rand.Int cannot return an error here, so discarding
	// it is safe: crypto/rand.Read never errors and crashes the process
	// irrecoverably on the (practically impossible) entropy failure.
	n, _ := rand.Int(rand.Reader, big.NewInt(36))
	i := int(n.Int64())
	d1, d2 := i/6+1, i%6+1
	if d1 == d2 {
		return []int{d1, d1, d1, d1} // doubles → 4 moves
	}
	return []int{d1, d2}
}

Für Neugierige: big.NewInt(36) ist der vollständige Raum aus 6 × 6 Ergebnissen, und i/6 + 1 sowie i%6 + 1 teilen diese eine Zahl wieder in zwei Augenzahlen von 1 bis 6 auf.

Pasch funktioniert genau wie bei echten Würfeln

Ein Wurf besteht aus zwei Würfeln. Sind beide gleich — ein Pasch — gibt dir Backgammon vier Züge dieses Werts, also liefert die Funktion vier Einträge. Die Chancen sind identisch mit echten Würfeln: jeder Pasch fällt mit 1 zu 6, ein bestimmter Pasch (etwa Doppel-5) mit 1 zu 36. Wir machen Pasch weder seltener, um das Spiel zu bremsen, noch häufiger, um es zu beschleunigen. Sie fallen genau so oft, wie es die Physik vorgibt.

Was der Wurf bewusst nicht tut

Hier liegt der Kern des „Manipulations”-Verdachts, also reden wir Klartext. Die Würfelfunktion:

  • liest nicht den Punktestand, den Spielstand oder wer gerade auswürfelt;
  • kennt nicht den Einsatz, wer du bist oder gegen wen du spielst;
  • hat keine Aufhol-Logik, keine Schwierigkeitskurve, keinen Schubs zugunsten des Hauses.

Ihr einziger Input ist Zufall. Ihr einziger Output sind zwei faire Würfel. Die Würfel wissen wirklich nicht — und können nicht wissen — dass du eine 6-1 gebraucht und stattdessen eine 2-1 bekommen hast.

Vertrauen wird verdient, nicht behauptet

Wir hätten einfach „unsere Würfel sind fair” schreiben und weitergehen können. Lieber geben wir dir den Mechanismus und den Code und lassen dich nachprüfen. Genau darum geht es in diesem Beitrag: nachprüfbare Transparenz schlägt eine Beruhigung, die du einfach schlucken musst.

Wenn du je geschworen hast, die Würfel hätten es auf dich abgesehen — du bist in guter Gesellschaft, das hat jeder Backgammon-Spieler schon. Der Unterschied: Jetzt kannst du genau nachlesen, wie sie gemacht werden.

Spiel eine Partie und überzeug dich selbst →

Lieber eine App? Hol sie dir im App Store oder bei Google Play.

Bereit zu spielen?

Jetzt spielen
Jetzt spielen