Real-World-Probleme mit naivem Mischen

Ich schreibe eine Reihe von Artikeln, die dazu dienen sollen, Programmierkonzepte durch den Einsatz von Poker-Themen zu vermitteln. Momentan arbeite ich an dem Thema Shuffling.

Als Jeff Atwood weist auf CodingHorror.com , eine einfache Shuffling-Methode (Iteration durch ein Array und tauschen jede Karte mit einer zufälligen Karte an einer anderen Stelle im Array) erstellt eine ungleiche Verteilung von Permutationen. In einer tatsächlichen Anwendung würde ich einfach die Knuth Fisher-Yates Shuffle verwenden für eine gleichmäßigere Zufälligkeit. Aber ich möchte die Erklärung von Programmierkonzepten nicht mit dem viel weniger coder-freundlichen Algorithmus verbiegen.

Das führt zu der Frage: Wie viel Vorteil hätte ein schwarzer Hut, wenn er wüsste, dass Sie einen naiven Mix aus 52 Karten spielen? Es scheint, als wäre es unendlich klein.

0
hinzugefügt bearbeitet
Ansichten: 2

5 Antworten

Der Knuthuschel ist eine unbedeutende Veränderung im Vergleich zum naiven Mischen: Tausche einfach mit einer Karte im verbleibenden (nicht geteilten) Abschnitt des Decks und nicht irgendwo im gesamten Deck. Wenn Sie daran denken, dass Sie wiederholt die nächste Karte in der Reihenfolge der verbleibenden nicht gewählten Karten wählen, ist es auch ziemlich intuitiv.

Ich persönlich denke, dass es ein schlechter Ansatz ist, Schülern einen schlechten Algorithmus beizubringen, wenn der richtige nicht komplizierter (und einfacher zu visualisieren!) Ist.

0
hinzugefügt
Ich stimme zu. In diesem Fall denke ich, dass beide Algorithmen gezeigt werden sollten und eine Erklärung, warum man besser ist als die andere. In diesem Fall ist es eine sehr kleine Änderung und macht es meiner Meinung nach nicht komplizierter.
hinzugefügt der Autor some, Quelle

Nebenbei bemerkt gab es einen Blogbeitrag über ITtoolbox über das Mischen, das für das Simulieren eines Shuffle von Interesse sein könnte.

Was deine Frage betrifft, bedenke, dass es 52 gibt! Deck-Konfigurationen, mit denen man beginnen könnte, könnten eine Rolle spielen, wo die Dinge landen, wie in Jeffs Beispiel des 3-Karten-Decks, beachte, dass die 1 im Überrepräsentierten in jedem Slot einmal vorkommt. Beachten Sie auch, dass er sagt, dass Sie ein paar tausend Beispiele haben müssen, bevor es offensichtlich wird, wo der Vorteil ist, aber mit einem Deck werden Sie wahrscheinlich nicht gleich mit dem gleichen Anfangsdeck anfangen, oder? Sie würden die ausgeteilten Karten nehmen und auf den Boden legen und sie mischen, was sich wahrscheinlich nicht wiederholen würde.

0
hinzugefügt

Es ist nicht so, als ob du ein Poker-Programm schreibst, das für eine echte Online-Glücksspielseite verwendet wird. Eine Fähigkeit, jemanden beim Programmieren zu betrügen, ist keine große Sache, wenn man Leuten beibringt, wie man programmiert.

Hinterlassen Sie einen Hinweis, dass dies ein schlechtes Modell der realen Welt ist (mit einem Hinweis darauf als möglicher Sicherheitsfehler), und machen Sie weiter mit dem Unterricht.

0
hinzugefügt
Ich hatte zu der Zeit, als ich das schrieb, nicht bemerkt, dass der Unterschied so trivial ist. Ich stimme zu: Sagen Sie ihnen den guten Mischalgorithmus. Vielleicht können die genauen Angaben zum "Warum" "auf diese Literatur verweisen".
hinzugefügt der Autor Keith B, Quelle
Nein, aber die Leute, die diese Artikel lesen, können weitermachen. Das richtige Mischen ist wichtig, denn wenn man es falsch gemacht hat, hat man vorher eine Pause gemacht.
hinzugefügt der Autor afrazier, Quelle

Subjektiv.

Es scheint, als wäre es unendlich klein.

Zustimmen.

0
hinzugefügt

It turns out the advantage is quite significant. Check out this article

Ein Teil des Problems ist der fehlerhafte Algorithmus, aber ein anderer Teil ist die Annahme, dass Sie "zufällige" Zahlen von einem Computer bekommen können.

0
hinzugefügt