Wahrscheinlichkeitsberechnung?
Ich ziehe aus einem Stapel mit 40 Karten 7 Karten ohne zurücklegen. Wie hoch ist die Wahrscheinlichkeit, dass ich 5 bestimmte Karte ziehe?
1 Antwort
Das geht über die Hypergeometrische Verteilung. Hier ist N = 40 (Grundgesamtheit), M = 5 (Anzahl der Richtigen in der Grundgesamtheit), n = 7 (Größe der Stichprobe) und k = 5 (Anzahl der gewünschten Treffer). Ergebnis: 3,19 * 10^(-5)
Diese Angabe ist ohne Gewähr. Bin mir nicht völlig sicher, ob das mit dem n stimmt.
Kaenguruh
07.08.2022, 01:23
@Ramoixus
Hier ist's ganz gut erklärt: https://matheguru.com/stochastik/hypergeometrische-verteilung.html
Monte-Carlo-Simulation sagt: „Es passt...“
> cat a.c
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <inttypes.h>
void A() {
const uint32_t C = 100*1000*1000;
const uint8_t N = 40;
const uint8_t n = 7;
const uint8_t m = 5;
uint32_t G = 0;
for (uint32_t l=C; l>0; l--) {
uint8_t U[N]; for (uint8_t i=0; i<N; i++) U[i]=i;
uint8_t msk = 0;
for (uint8_t i=0; i<n; i++) {
const uint32_t r = random() % (N-i);
if (U[r]<m) msk|=1<<U[r];
memmove(U+r,U+r+1,(N-i)-(r+1));
}
if (msk==(1<<m)-1) G++;
}
printf("%u games: %jd yay / %.3fppm\n",C,G,G*(1e6/C));
}
int main() {
unsigned seed; read(0,&seed,sizeof(seed)); srandom(seed);
A();
return 0;
}
> c++ -o a a.c -O3 && dd if=/dev/urandom bs=4 count=1|./a
1+0 records in
1+0 records out
4 bytes copied, 6.984e-05 s, 57.3 kB/s
100000000 games: 3174 yay / 31.740ppm
danke dir, kannte die Hypergeometrische Verteilung noch nicht