Der Irrtum des Spielers ist eine kognitive Verzerrung, bei der wir fälschlicherweise davon ausgehen, dass Dinge, die in der Zukunft häufig aufgetreten sind, weniger wahrscheinlich sind und Dinge, die seit einiger Zeit nicht mehr aufgetreten sind, eher bald passieren werden. Ihre Aufgabe ist es, eine bestimmte Version davon zu implementieren.
Herausforderungserklärung
Schreiben Sie eine Funktion, die eine zufällige Ganzzahl zwischen 1 und 6 einschließlich zurückgibt. Der Haken: Wenn die Funktion zum ersten Mal ausgeführt wird, sollte das Ergebnis einheitlich sein (innerhalb von 1%). Jeder nachfolgende Aufruf wird jedoch zugunsten von Werten verschoben, die zuvor weniger oft gewürfelt wurden. Die spezifischen Details sind wie folgt:
- Der Würfel merkt sich die Anzahl der bisher erzeugten Zahlen.
- : Jedes Ergebnis wird mit der folgenden Formel gewichtet
- Wenn zum Beispiel die bisherigen Rollenzahlen , sind die Gewichte , das heißt, Sie sind es 4-mal häufiger eine als eine würfeln .
- Beachten Sie, dass die Formel bedeutet, dass ein Rollergebnis von genauso gewichtet wird wie
Regeln und Annahmen
- Es gelten Standard-E / A-Regeln und verbotene Regelungslücken
- Die Rollen sollten nicht deterministisch sein. (Verwenden Sie also ein PRNG, das aus einer flüchtigen Quelle stammt, wie es normalerweise als eingebautes Produkt erhältlich ist.)
- Ihre zufällige Quelle muss eine Periode von mindestens 65535 haben oder echte Zufälligkeit sein.
- Die Verteilungen müssen bei Gewichten bis zu 255 innerhalb von 1% liegen
- 16-Bit-RNGs sind gut genug, um beide oben genannten Anforderungen zu erfüllen. Die meisten eingebauten RNGs sind ausreichend.
- Sie können die aktuelle Verteilung weitergeben, solange diese Verteilung entweder durch den Aufruf mutiert wird oder die Verteilung nach dem Wurf neben dem Würfelwurf zurückgegeben wird. Die Aktualisierung der Verteilung / Anzahl ist Teil dieser Herausforderung .
- Sie können Gewichte anstelle von Zählungen verwenden. Wenn dabei ein Gewicht auf 0 fällt, sollten alle Gewichte um 1 erhöht werden, um den gleichen Effekt wie beim Speichern von Zählwerten zu erzielen.
- Sie können diese Gewichte als Wiederholungen von Elementen in einem Array verwenden.
Viel Glück. Mögen die Bytes immer zu Ihren Gunsten sein.