Sannsynlighetsregning

Det er god trening å prate matematikk. Her er det fritt fram for alle. Obs: Ikke spør om hjelp til oppgaver i dette underforumet.

Moderatorer: Vektormannen, espen180, Aleks855, Solar Plexsus, Gustav, Nebuchadnezzar, Janhaa

jos
Galois
Galois
Innlegg: 563
Registrert: 04/06-2019 12:01

$\binom{104}{72} = \binom{104}{32}$ da $72 +32 = 104$
jos
Galois
Galois
Innlegg: 563
Registrert: 04/06-2019 12:01

I tillegg slår det meg som "a red herring" om tilbakelegging skjer ved hver eller hver tredje trekning. Det vil påvirke sannsynlighetene for den enkelte til å vinne i dagstrekningene, men ikke fordelingen av gevinster mellom antall utfall der alle får minst én gevinst og antall utfall hvor det ikke er en slik begrensning. Mitt eget forslag til dette forholdet var forøvrig feilaktig.
Gustav
Tyrann
Tyrann
Innlegg: 4558
Registrert: 12/12-2008 12:44

10 millioner simuleringer i Python 3 gir sannsynlighet på 0.0110301, så virker som det er nært sannheten på denne oppgaver (hvis det er tilbakelegging på samtlige premier, også innad per dag).

Hvis det for hver dag er 3 ulike vinnere (men tilbakelegging etter hver dag) gir tilsvarende simulering en sannsynlighet på 0.015726.
Aleks855
Rasch
Rasch
Innlegg: 6855
Registrert: 19/03-2011 15:19
Sted: Trondheim
Kontakt:

Da har vi jo en interessant gåte her. Fra begge våre simuleringer, så burde $P \approx 1\%$.

La $S$ være en mengde slik at $|S| = 72$. Da burde det jo la seg regne ut sannsynligheten ved å betrakte at antall suksess-scenarier er ekvivalent med antall partisjoneringer av $S$ i 33 ikke-tomme partisjoner, og det totale antallet scenarier er ekvivalent med antall partisjoneringer av $S$ i 33 partisjoner, der partisjonene kan være tomme.

Når jeg prøver å finne ut av hvordan man skulle gjort det, så havner jeg inne på noe som kalles Stirling-tall, men det var ikke en spesielt fruktbar vei å gå, for mitt nivå.
Bilde
Mattebruker
Weierstrass
Weierstrass
Innlegg: 474
Registrert: 26/02-2021 21:28

Hallo ! Har laga min eigen datakode ( Python3 ) for å estimere P( alle tilsette får minst ein gevinst ) når vi gjennomfører 72 enkelttrekningar .
Fekk 780 treff på 100000 " forsøk ". PC-en min brukte mindre enn eit halvt minutt på denne jobben. Auka deretter talet på simuleringar til 1000000. Da opplevde
eg at maskinen melde " pass" ( "behandling pågår " - merket forvann ) før den kom i mål. Kan nokon av dykk gi ei plausibel forklaring på denne funksjonssvikten ?
Ser at Gustav har utført 10 millionar " forsøk " med sin "arbeidshest" og fått eit høgst tilfredsstillande resultat.
Gustav
Tyrann
Tyrann
Innlegg: 4558
Registrert: 12/12-2008 12:44

Aleks855 skrev: 28/12-2023 02:40 Da har vi jo en interessant gåte her. Fra begge våre simuleringer, så burde $P \approx 1\%$.

La $S$ være en mengde slik at $|S| = 72$. Da burde det jo la seg regne ut sannsynligheten ved å betrakte at antall suksess-scenarier er ekvivalent med antall partisjoneringer av $S$ i 33 ikke-tomme partisjoner, og det totale antallet scenarier er ekvivalent med antall partisjoneringer av $S$ i 33 partisjoner, der partisjonene kan være tomme.

Når jeg prøver å finne ut av hvordan man skulle gjort det, så havner jeg inne på noe som kalles Stirling-tall, men det var ikke en spesielt fruktbar vei å gå, for mitt nivå.
Tror feilen med min analytiske metode er at jeg har antatt at premiene er identiske, mens de i simuleringen ikke er det.

Vi kan betrakte en forenklet situasjon med 3 premier og 2 ansatte. Kall premiene $a,b,c$ og la $(a,b)$ betegne at ansatt nr 1 har fått premie $a$, og ansatt 2 har fått premie $b$ etc. Da får vi følgende 8 mulige premiefordelinger: $(abc,0),(ac,b),(ab,c),(a,bc),(bc,a),(b,ac),(0,abc),(c,ab)$. Sannsynligheten for at begge ansatte får minst 1 premie blir altså $6/8=75\%$. Noe som stemmer ved simulering tilsvarende tidligere. Den analytiske løsningen med samme metode som mitt første innlegg gir $\frac{2\choose 1}{4\choose 3}=50\%$.

Man må altså modifisere stars-and-bars-metoden til at premiene er ikke-identiske, noe som er gjort her: https://math.stackexchange.com/question ... ct-objects
Mattebruker
Weierstrass
Weierstrass
Innlegg: 474
Registrert: 26/02-2021 21:28

Hallo igjen ! Datasimulering av sannsynet

( * ) P(minst ein gevinst på alle tilsette )

har igjen fanga interessa mi. Denne gongen har eg laga ein datakode som simulerer sannsynet ( * ) gitt at "Lotto-maskinen" trekkjer ut tre ulike vinnarar
kvar dag i 24 dagar. Lot programmet utføre 100000 " forsøk " , og kom ut med 1087 "treff". Men PC - en min brukte 26 minutt på denne jobben, altså
relativt lang tid.
Ser at Aleks og Gustav har utført same analysen med høvesvis 1 million og 10 millionar simuleringar. Da lurer eg på kor lang tid dataverktøyet
dykkar brukte på desse analysane. Ser elles at koden til Aleks har færre og difor langt meir potente kommandoar enn dei eg har brukt i mi løysing.
"Avansert" koding vil ganske sikkert redusere køyretida. For orden skuld legg eg ved den koden eg sjølv har brukt.

Kode: Velg alt

from numpy import *
import random
treff = 0
for talsimuleringar in range(1,100001):
 rekke = zeros(5)
 personale = zeros(35)
 for dag in range(1,25):
  test= False
  while (test == False): 
   for nummer in range(1,4):
    rekke[nummer]= random.randint(1,34)
   test1 = rekke[1] != rekke[2]
   test2 = rekke[1] != rekke[3]
   test3 = rekke[2] != rekke[3]
   test = test1 and test2 and test3
  for k in range(1,4):
   personale[rekke[k]] = personale[rekke[k]] + 1
 minstein = True
 for tilsett in range(1,34):
  if personale[tilsett] < 1:
    minstein = False
 if minstein == True:
  treff = treff + 1
print( "Antaltreff: ", treff)      
Gustav
Tyrann
Tyrann
Innlegg: 4558
Registrert: 12/12-2008 12:44

Kode: Velg alt

import numpy as np
import random
import time
from random import sample

start = time.time()
successes = 0.
simulations = 1000000
employees = 33

for _ in range(simulations):
	winners = [0] * employees
	for _ in range(24): 
		for n in sample(range(0, employees), 3): winners[n] += 1
	if np.count_nonzero(winners) == employees: successes += 1

print successes / simulations
print time.time() - start
Denne koden med 1 million simuleringer tok 98 sekund og gir sannsynligheten 0.015. Der plukkes 3 distinkte vinnere hver dag. Python 2.7 på en gammel macbook pro mid 2014 med 16gb ram og 2.2Ghz, firekjerners i7 prosessor.
Vedlegg
Skjermbilde 2023-12-29 kl. 15.44.42.png
Skjermbilde 2023-12-29 kl. 15.44.42.png (8.79 kiB) Vist 1441 ganger
Mattebruker
Weierstrass
Weierstrass
Innlegg: 474
Registrert: 26/02-2021 21:28

Imponerande ! Du brukar openbart eit langt meir hurtigarbeidande verktøy enn det eg har tilgang til.
Gustav
Tyrann
Tyrann
Innlegg: 4558
Registrert: 12/12-2008 12:44

Antall måter å fordele $n$ distinkte premier på $k$ identiske ansatte slik at ingen ansatt står uten premie er gitt av "Stirling number of the second kind", ${n \brace k}=\sum_{i=0}^k \frac{(-1)^{k-i}i^n}{(k-i)!i!}$. Hvis de ansatte er distinkte må vi multiplisere dette med $k!$, så antall måter å fordele $n$ distinkte premier på $k$ distinkte ansatte slik at ingen står uten premie blir $k!\cdot {n \brace k}=\sum_{i=0}^k (-1)^{k-i}{k\choose i}i^n$ . Antall måter å fordele $n$ distinkte premier på $k$ distinkte ansatte uten betingelsen at alle ansatte får premie er $k^{n}$.

Sannsynligheten for at alle ansatte får minst én premie når det er tilbakelegging på samtlige premier blir derfor $$p=\frac{\sum_{i=0}^k (-1)^{k-i}{k\choose i}i^n}{k^n}=\frac{\sum_{i=0}^{33} (-1)^{33-i}{33\choose i}i^{72}}{33^{72}}\approx 0.011038..$$, som stemmer bra med våre simuleringer.

Kilde: https://en.wikipedia.org/wiki/Stirling_ ... econd_kind
Aleks855
Rasch
Rasch
Innlegg: 6855
Registrert: 19/03-2011 15:19
Sted: Trondheim
Kontakt:

Gustav skrev: 29/12-2023 16:43 Antall måter å fordele $n$ distinkte premier på $k$ identiske ansatte slik at ingen ansatt står uten premie er gitt av "Stirling number of the second kind", ${n \brace k}=\sum_{i=0}^k \frac{(-1)^{k-i}i^n}{(k-i)!i!}$. Hvis de ansatte er distinkte må vi multiplisere dette med $k!$, så antall måter å fordele $n$ distinkte premier på $k$ distinkte ansatte blir $k!\cdot {n \brace k}=\sum_{i=0}^k (-1)^{k-i}{k\choose i}i^n$ . Antall måter å fordele $n$ distinkte premier på $k$ distinkte ansatte uten betingelsen at alle ansatte får premie er $k^{n}$.

Sannsynligheten for at alle ansatte får minst én premie når det er tilbakelegging på samtlige premier blir derfor $$p=\frac{\sum_{i=0}^k (-1)^{k-i}{k\choose i}i^n}{k^n}=\frac{\sum_{i=0}^{33} (-1)^{33-i}{33\choose i}i^{72}}{33^{72}}\approx 0.011038..$$, som stemmer bra med våre simuleringer.

Kilde: https://en.wikipedia.org/wiki/Stirling_ ... econd_kind
Fantastisk! Jeg var inne på det med Stirling-tall, men noe av det jeg glemte var blant annet å gange med $k!$.
Bilde
Aleks855
Rasch
Rasch
Innlegg: 6855
Registrert: 19/03-2011 15:19
Sted: Trondheim
Kontakt:

Mattebruker skrev: 29/12-2023 16:09 Imponerande ! Du brukar openbart eit langt meir hurtigarbeidande verktøy enn det eg har tilgang til.
Prøv gjerne å kjøre Gustavs kode på din egen maskin. Det er ikke sikkert det er SÅ langt bak.
Bilde
SEJOHNSE@YAHOO.NO
Fibonacci
Fibonacci
Innlegg: 4
Registrert: 19/12-2023 08:21

Fantastisk, da er vi vel i mål både med den matematiske og den simiuleringsmessige løsningen - takk for stort engasjement! og gode svar. Lite sannsynlig at alle kollegene vinner hvis ikke antall premier endres.
Svar