Vier Felder, eine Quelle für den Zufall. Zahlen aus einem Bereich, mit oder ohne Wiederholungen. Eine eingefügte Liste: gemischt, gezogen oder in Teams geteilt. Würfel in Standardschreibweise und Münzwürfe mit Auszählung. UUIDs, Zufallsbytes und Token.
Benutzt wird crypto.getRandomValues, nicht Math.random. Math.random ist schnell, gesät und rekonstruierbar: aus einer Handvoll Ausgaben lässt sich der Zustand herleiten und der Rest vorhersagen. Bei einem Würfelspiel stört das niemanden. Bei einer Verlosung, die jemand anfechten könnte, oder bei einem Bezeichner, der nicht erratbar sein soll, ist es das falsche Werkzeug, und beides zu mischen hieße, dass ein Teil eines Generators still schwächer ist als der Rest.
Die Zahlen sind gleichverteilt, und das ist schwerer, als es klingt. Ein Zufallswert modulo der Bereichsgröße bevorzugt das untere Ende, sobald der Bereich die Quelle nicht glatt teilt: bei einem Byte und hundert Teilnehmern sind die ersten sechsundfünfzig anderthalbmal so wahrscheinlich wie der Rest. Diese Maschine verwirft genau die Werte, die das verursachen, und zieht neu, jedes Ergebnis hat also exakt dieselbe Chance. Das Mischen ist aus demselben Grund Fisher-Yates.
Das Werkzeug führt keinen Verlauf, speichert keine Liste und nutzt keinen lokalen Speicher. Eine Teilnehmerliste ist keine Einstellung und wird beim Schließen des Tabs verworfen.