Qetsiyah 6503 – Livehjälpare
Postad: 23 jun 2023 10:45 Redigerad: 23 jun 2023 10:46

Sannolikshetsteori lottdragning med "pity"

Hej,

I ett lottsystem i ett spel jag spelar har du 0,6% chans att få ett pris. Utöver det finns det ett "pity" system som garanterar att om du inte fått ett pris på 90 dragningar, så får du garanterat priset på 91:a dragningen. "Pity" räkningen nollställs efter att du får priset, både om du får för pity eller om du får på tur.

(Tycker personligen att det är konstigt, man förväntas ju få priset 6 gånger på 1000 dragningar, så det är väl helt normalt att inte få priset på 90 drag, behövs ingen pity haha)

Hursomhelst, vad är den effektiva chansen att få pris? Det är ju inte 0,6%+(1/90) pga att pity-räkningen nollställs även när man får pris via tur.

Hondel 1294
Postad: 23 jun 2023 12:32

På hur många dragningar? Hur många dragningar var det sedan du vann senast?

Qetsiyah 6503 – Livehjälpare
Postad: 23 jun 2023 14:32 Redigerad: 23 jun 2023 14:50

Ja hur många procent kan man vänta sig att vinna på oändligt många drag är det jag undrar.

Okej men om jag resonerar såhär: det är lika sannolikt att jag får vinst via tur närsomhelst under en 90-drags period. (Man vill ju inte få vinst nära 90 då man är nära på att få vinst via garanti ändå, och ens pity nollställs). I genomsnitt kan vi säga att man vid varje drag riskerar att slösa bort i genomsnitt 45 pity. Den totala sannolikheten att få vinst är således 0,006+(1/(90+0.006*90))?

Det är alltså en liten justering med hänsyn tagen till att man ibland slösar pity, och får inte vinst exakt var 90:drag.

Hondel 1294
Postad: 23 jun 2023 16:53 Redigerad: 23 jun 2023 16:56

ah ok, jag ska vara ärlig och säga att jag inte är helt säker på hur det här ska lösas. Jag tänker dock såhär: eftersom efter varje vinst så börjar spelet ”om” borde du kunna fundera på antalet dragningar för att få din första vinst. Det kommer i princip följa en geometrisk fördelning, men där all sannolikhet för X>91 har flyttats till X=91. Jag får dock inte riktigt ihop detta själv så jag skulle behöva fundera lite mer, alternativt att någon annan lyckas lösa det på detta eller ett annat sätt

Fermatrix 7841 – Fd. Medlem
Postad: 24 jun 2023 02:31

Enklast är kanske att simulera det?

Laguna Online 28603
Postad: 24 jun 2023 11:11

0,6% + 1/90 är ungefär 0,0171. Min lilla simulering ger ungefär 0,0143.

Qetsiyah 6503 – Livehjälpare
Postad: 24 jun 2023 11:15

Ja jo faktiskt, jag kan nog snickra ihop ett pythonscript på nån minut. Undrar bara om nåt fukas med floattal, vi får se

Hondel 1294
Postad: 24 jun 2023 14:04 Redigerad: 24 jun 2023 14:06

Ok, jag har också simulerat med följande kod i R

p_win = 0.006
n_draws = 10000000
counter = 0
n_wins = 0
for(i in 1:n_draws)
{
  u = runif(1)
  counter = counter + 1
  if(u < p_win | counter == 91)
  {
    n_wins = n_wins + 1
    counter = 0
  }
}
print(n_wins)
print(n_wins/n_draws)

och får 0.0142032. Om jag sedan modellerar antalet dragningar till första vinsten som jag beskrev tidigare och beräknar förväntade antalet dragningar till första vinsten (eller, antalet dragningar till nästa vinst, givet att man precis vunnit), får jag 70.2816 dragningar, och eftersom man då vunnit 1 gång skulle man kunna säga att förväntade sannolikheten för vinst är 1/70.2816 = 0.01422847, vilket stämmer bra överens med simuleringen. Jag är dock osäker på om det bara var tur att det blev så nära, eller om det är korrekt, exakt varför det blir korrekt. 

Kod för att beräkna förväntade antalet dragningar till vinst:

x = seq(1, 90)
x

p_win = 0.006
p = numeric(90)
for(i in x)
{
  p[i] = (1-p_win)^(i-1)*p_win
}
x[91] = 91
p[91] = 1 - sum(p)

E_x = sum(x*p)
print(E_x)
print(1/E_x)

 


Tillägg: 24 jun 2023 17:29

Dumt av mig att skriva ut talet som jag simulerat fram med så noggrann precision, eftersom samma kod kommer ge lite olika värdesaker gång. Andra kodstycket är däremot mitt försök till en exakt lösning (och kommer därför inte variera) 


Tillägg: 24 jun 2023 23:53

värdesaker=värde varje

Qetsiyah 6503 – Livehjälpare
Postad: 24 jun 2023 16:02

Haha lagom nördigt med det här under midsommar, men intressanta reslutat, jag tänkte försöka imorn.

Jag provade en väldigt enkel simulering i Python, och får sannolikheten till att variera mellan 1,42 och 1,43%, vilket stämmer väl överens med Hondels resultat. Nedanstående kod utgår dock inte från någon statistisk modell, utan genererar bara ett (pseudo)slumpmässigt tal mellan noll och 999. Om talet är mindre än 6 räknas det som vinst, om talet är större är det förlust.

import random

wins = 0
plays = 1000000
pityScore = 0

# Varje loop är en omgång
for i in range(0,plays):

    # Undersök först om vi vinner automatiskt på pity
    if pityScore == 90:
        wins += 1
        pityScore = 0

    # Om vi inte vann på pity, vinner vi ärligt?
    else:
        # 0,6% sannolikhet
        probs = random.randint(0,1000)
        if probs < 6:
            wins += 1
            pityScore = 0
        else:
            pityScore += 1
            
# Skriv ut sannolikheten för vinst i procent
print((wins/plays) * 100)
Hondel 1294
Postad: 24 jun 2023 17:31
Smutstvätt skrev:

Jag provade en väldigt enkel simulering i Python, och får sannolikheten till att variera mellan 1,42 och 1,43%, vilket stämmer väl överens med Hondels resultat. Nedanstående kod utgår dock inte från någon statistisk modell, utan genererar bara ett (pseudo)slumpmässigt tal mellan noll och 999. Om talet är mindre än 6 räknas det som vinst, om talet är större är det förlust.

import random

wins = 0
plays = 1000000
pityScore = 0

# Varje loop är en omgång
for i in range(0,plays):

    # Undersök först om vi vinner automatiskt på pity
    if pityScore == 90:
        wins += 1
        pityScore = 0

    # Om vi inte vann på pity, vinner vi ärligt?
    else:
        # 0,6% sannolikhet
        probs = random.randint(0,1000)
        if probs < 6:
            wins += 1
            pityScore = 0
        else:
            pityScore += 1
            
# Skriv ut sannolikheten för vinst i procent
print((wins/plays) * 100)

Mitt första kodstycke är också en simulering och det var dumt att skriva ut första talet med sådan precision eftersom det var just en simulering och därför kommer ge lite olika resultat varje gång. Andra stycket är däremot inte en simulering utan bara en beräkning av mitt försök till exakt beskrivning av sannolikheten (som alltså inte kommer variera). Jag la till en kommentar om det

Svara Avbryt
Close