zufallszahl für Kartenspiel - random aureichend?



  • Hallo Community. Folgende Frage: ich versuche gerade, ein Black Jack spiel zu schreiben. Ich vernachlässige dabei im Moment die Farben, weil diese für das Spiel eh nicht relevant sind(6*52 Karten(also (also 6*4*13)Karten und jede Farbe zählt ja gleich). Ich möchte damit verschiedene Strategien ausprobieren, ohne dass sie mich Geld kosten, so wies real der Fall wäre, und - ich muß es zugeben - ich möcht auch ein wenig Spaß an dem Spiel haben.

    Nun frage ich mich, ob es ausreicht, mit der random-Klasse in c# eine Zahl zu generieren und diese dann per Modulo in einen Kartenwert zu verwandeln, oder ob ich für das Spiel schon "echte Zufallszahlen" brauche. Kann mir jemand weiterhelfen. Es soll so authentisch wie möglich sein.



  • Wie willst Du bitte "echte" Zufallszahlen generieren? Random, welche Form auch immer (Für C# bist Du hier eigentlich falsch...) reicht.



  • Möchtest du davon ausgehen, dass du nur endlich viele Karten im Stapel hast (ohne zurücklegen der gezogenen Karten auf den Stapel)? Das musst du berücksichtigen. Du kannst zb einen Stack nehmen und dann zufällig umsortieren. In C++ gibts dafür sogar eine eigene Funktion (random_shuffle).



  • Taurin schrieb:

    Möchtest du davon ausgehen, dass du nur endlich viele Karten im Stapel hast (ohne zurücklegen der gezogenen Karten auf den Stapel)? Das musst du berücksichtigen. Du kannst zb einen Stack nehmen und dann zufällig umsortieren. In C++ gibts dafür sogar eine eigene Funktion (random_shuffle).

    Natürlich geh ich davon aus, dass endlich viele Karten im Stapel sind, nämlich genau 312, und die, welche bereits im Spiel waren ausscheiden, so wies im normalen BlackJack auch ist. Ziel der Sache ist, eine Strategie zu finden, die am meisten Profit abwirft(aber ich habe nicht vor es Real auszuprobieren).

    Im Übrigen kann man die 312 Karten ja nicht bis zum Schluß ausspielen, sondern muß im hinteren Drittel irgendwann abbrechen(man stelle sich vor, die Karten gehen aus, und der/die Letzten Spieler könnten nicht mehr kaufen,bzw. die Bank kann nichts mehr nehmen, weil keine Karten mehr da sind,kann nicht sein). Aber der Ansatz mit dem Stack war nicht schlecht, ich muß mal schaun, obs in C# da nicht doch ne einfache Lösung für mein Problem gibt.





  • die ganzen pokerseiten verwenden hardware rngs, aber ich gehe mal davon aus, dass du dir die nicht leisten kannst.



  • Fisk schrieb:

    Nun frage ich mich, ob es ausreicht, mit der random-Klasse in c# eine Zahl zu generieren und diese dann per Modulo in einen Kartenwert zu verwandeln

    ja, für dein spiel langt das leicht



  • Ich weiss jetzt nicht ganz genau, welches Ziel du verfolgst, aber mir fallen spontan folgende Dinge zu deinem Vorhaben ein:

    Ein normales Deck mit 52 Karten reicht völlig aus, da der Computer vor jedem Spiel das Deck in Mikrosekunden neu mischen kann und damit vor jedem Spiel ein frisch gemischtes Deck zur Verfügung steht. Casinos benutzen mehrere Decks, um exploit Versuche wie das Forbes-Zählen zu erschweren, weil die Varianz bei Mehrfachdecks grösser ist als bei einem Deck und weil es zu lange dauert, nach jedem Spiel die Karten neu zu mischen.
    Da vor jedem Spiel das Deck frisch gemischt ist kannst du keine Vorhersagen (ausser der Normalverteilung) machen, mit welcher Wahrscheinlichkeit eine bestimmte Karte als nächstes gezogen wird, um daraus einen Vorteil zu ziehen. Damit unterliegen computergestützte Black Jack Spiele dem Zufall und sind somit nicht ausnutzbar. In Casinos sieht die Sache anders aus, da dort bereits gezogene Karten aus dem Deck entfernt werden und damit Aussagen über die Wahrscheinlichkeiten der übrigen Karten gemacht werden können, was dann ausgenutzt werden kann.


Anmelden zum Antworten