Wahrscheinlichkeit v. versch. wahrsch. Ereignissen

Hallo!

Ich möchte die Wahrscheinlichkeit berechnen, wie Karten aus einem Kartenspiel kommen (Das brauch ich um ein BlackJack-Programm zu schreiben :wink: ). Ich erklär euch am besten erst mal was ich bisher habe:

So berechne ich die Zufallskarte:

int Zufall()
{
srand (time(NULL));
zufallszahl = rand()%14;
}

Erklärung:
Damit wird eine Zahl zwischen 1 und 14 geliefert. Jede Zahl steht für eine Karte und jede Karte steht für einen Zahlenwert, z.B:
1,Eins,1;
14,Ass,11;
12,Dame,10;

Danach soll die Bank eine Karte bekommen. Da ist auch schon das Problem: Wie mache ich dem Programm verständlich, dass jetzt eine Karte weniger im Spiel ist, und er die Wahrscheinlichkeit anders berechnen muss, weil eben diese Karte fehlt?

Leider hilft Google nicht weiter…

Mir kam der Gedanke, dass man das Programm aufwändiger schreiben müsste, so dass man Rand() die Menge aller Ereignisse, die als Zufallszahl in Frage kommen vorgeben müsste und dann, wenn eine Zahl eines gewissen Ereignisses gezogen wurde, vor das Ereignis *3/4 nehmen, um auszudrücken, das es *3/4 so viel wahrscheinlicher wurde.

Vielen Dank schon mal,
Matthias

Hallo,

int Zufall()
{
srand (time(NULL));
zufallszahl = rand()%14;
}

Damit ist der Wert zwischen 0 und 13

Erklärung:
Damit wird eine Zahl zwischen 1 und 14 geliefert.

Falsch.

Danach soll die Bank eine Karte bekommen. Da ist auch schon
das Problem: Wie mache ich dem Programm verständlich, dass
jetzt eine Karte weniger im Spiel ist, und er die
Wahrscheinlichkeit anders berechnen muss, weil eben diese
Karte fehlt?

Das vermutlich einfachste ist, erst alle Karten zu mischen und dann auszuteilen - wie im richtigen Leben auch.
Zum Mischen verwendet man üblicherweise das hier:
http://en.wikipedia.org/wiki/Fisher-Yates_shuffle

HTH,
Moritz

Hi :smile:

Das vermutlich einfachste ist, erst alle Karten zu mischen und
dann auszuteilen - wie im richtigen Leben auch.
Zum Mischen verwendet man üblicherweise das hier:
http://en.wikipedia.org/wiki/Fisher-Yates_shuffle

Danke für den Tipp mit dem Mischen! Klappt wirklich super, auch wenn mir der Link nicht so viel gebracht hat^^
Aber das mit dem Mischen ist eine tolle Idee :wink:
Danke
Matthias

P.S. für alle die den Code haben wollen:

int Mischen()
{
for(i=0; i

Noch eine Frage!
Hallo!

Ich habe leider noch eine Frage zu dem Programm:
Ich habe jetzt folgenden Code um die Spielkarten zu mischen:

int Mischen()
{
int i;
for(i=0; i

Hi,

Hallo!

Ich habe leider noch eine Frage zu dem Programm:
Ich habe jetzt folgenden Code um die Spielkarten zu mischen:

Lass Dir im Debugger mal anzeigen, wie Du die Karten mischst. Dir wird auffallen, dass due letzte Karte immer stehen bleibt, weil es keine Karte mit höherem Index gibt, mit der getauscht werden kann.

Außerdem hast Du in deinem Quelltext einen kleinen Fehler mit dem Laufindex i. Der darf natürlich nur bis (einschließlich) 30 gehen, weil Du sonst eni Problem mit der Moduloanweisung bekommst (Div/0).

int Mischen()
{
int i;
for(i=0; i