Frage

ich eine Reihe von Artikeln meldet mich bedeutete Anfang Programmierkonzepte durch den Einsatz von Poker-bezogenen Themen zu lehren. Derzeit bin ich auf das Thema schlurfenden arbeiten.

Wie Jeff Atwood weist darauf hin, auf CodingHorror.com , ein einfaches Shuffling-Verfahren (durch eine Array Iterieren und jede Karte mit einer zufälligen Karte an anderen Stelle in dem Array Swapping) erzeugt eine ungleichmäßige Verteilung von Permutationen. Bei einer tatsächlichen Anwendung wäre, ich nutze einfach die Knuth Fisher-Yates Shuffle für einheitlichere Zufälligkeit. Aber ich will nicht, eine Erklärung von Programmierkonzepten mit dem viel weniger Coder freundlichen Algorithmus versinken.

Das führt zu der Frage: Wie viel von Vorteile wäre ein schwarz-Hut hat, wenn sie wissen, dass Sie einen naiven Shuffle eines 52-Karten-Deck verwendet haben? Es scheint, wie es verschwindend klein sein würde.

War es hilfreich?

Lösung

Es ist nicht wie Sie ein Poker-Programm schreiben, das für eine tatsächliche Online-Glücksspiel-Seite verwendet wird. Eine Fähigkeit, für jemanden am Programm zu betrügen ist keine große Sache, wenn man die Leute sind zu lehren, wie zu programmieren.

Lassen Sie eine Notiz zu sagen, dass dies ein schlechtes Modell der realen Welt ist (mit einem Verweis auf sie als eine mögliche Sicherheitslücke) und haben immer nur mit der Lehre gehen.

Andere Tipps

Der knuth Shuffle ist eine unbedeutende Veränderung gegenüber dem naiven Shuffle: Gerade tauscht mit jeder Karte in dem verbleibenden (ungemischten) Abschnitt des Decks statt überall im gesamten Deck. Wenn Sie daran denken, wie immer wieder die nächste Karte, um von den übrigen nicht gewählten Karten wählen, ist es ziemlich intuitiv, auch.

Ich persönlich denke, Studenten einen schlechten Algorithmus unterrichten, wenn der richtige ist nicht komplizierter ist (und leichter zu visualisieren!) Ist ein schlechter Ansatz.

Es stellt sich heraus, der Vorteil ganz erheblich ist. diesem Artikel Check out

Ein Teil des Problems ist der fehlerhafte Algorithmus, aber ein anderer Teil ist die Annahme, dass Sie „random“ Zahlen von einem Computer erhalten können.

Ein einfacher Algorithmus zum fairen & shuffling eine zufälligen Gleitkommazahl (z.B. zwischen 0 und 1) für jede Karte in dem Deck zuzuordnen sei, dann wird die Plattform durch die zugeordneten Nummern sortiert werden.

Dies ist eigentlich ein perfektes Beispiel für Studenten, dass nur zu realisieren, weil etwas intuitiv, die naive Shuffle in unserem Fall bedeutet nicht, es korrekt ist.

Subjektive.

  

Es scheint, wie es wäre verschwindend klein sein.

Akzeptieren.

Wie Nebenbei bemerkt, es gab ein Blog veröffentlicht über auf ITtoolbox über Schlurfen, die von Interesse sein kann, wenn es um die Simulation eines shuffle wird.

In Bezug auf Ihre Frage, bedenkt, dass es 52! Plattformkonfigurationen, die man damit anfangen könnte eine Rolle spielen in dem Ding landen wie in Jeffs Beispiel des 3 Kartendeck, beachten Sie, dass die 1 in der überrepräsentiert einmal in jedem Schlitz auftritt. Beachten Sie auch, dass er sagt, würde man ein paar tausend Beispiele haben, bevor sich herausstellt, wo der Vorteil ist, aber mit einem Deck, das Sie wahrscheinlich nicht wieder von vorne anfangen mit der exakt gleichen Anfangs Deck, sind Sie? Sie würden die Karten ausgeteilt nehmen und sie auf dem Boden legen und mischen sie was ich denken würde, zu wiederholen, nicht wahrscheinlich ist.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top