2023-08-29, 21:22
  #97
Medlem
Citat:
Ursprungligen postat av Enterprise
OK, det ska nog gå att fixa. Det var en liten chansning från min sida att "2" var en konstant nyckel, men detta kanske byts ut, så jag får kolla på hur det ser ut nu.

Edit: Det fungerar faktiskt på min burk. T.ex. just nu ger intervallet 200-225 inte fler än 24 rader.
Får inget felmeddelande alls. Du har inte ändrat något, t.ex. URL?

Jag dubbelkollade också på deras hemsida. Datan är inte förändrad på Europatipset. Antar att du försökte ändra till en annan spelform?

Ja, dels stryktipset men även fullträff hade ju varit en dröm att få till.
Citera
2023-08-29, 21:24
  #98
Medlem
Enterprises avatar
Citat:
Ursprungligen postat av Mysadname
Ja, dels stryktipset men även fullträff hade ju varit en dröm att få till.
Sidorna är nog annorlunda uppbyggda så då får man skapa en meny i början av skriptet där man får välja.
Stryktipset antar jag är lättast att inkludera. Fullträff är ju ett helt annat spel med 8 alternativ per match = någon med vass mattehjärna får komma på hur det ska kalkyleras. Jag är hyfsat bra på att skapa automatisering, däremot inte att räkna ut lämplig beräkningsmodell.
Citera
2023-08-29, 21:34
  #99
Medlem
Enterprises avatar
Så, nu bör Stryktipset och Europatipset fungera.
Fullträff får någon annan (du?) fundera på hur man bör beräkna, rent matematiskt alltså.

Kod:
import requests
import re
import json

import itertools
import sys

gamemode = int(input("Spelform? 1= Stryktipset 2= Europatipset "))

if not gamemode in [1,2]:
        print ("Endast 1 eller 2 möjliga val. Avbryter.")
        quit()

pmin = int(input("Golvnivå för antal streck (t.ex. 500)? "))
pmax = int(input("Taknivå för antal streck (t.ex. 550)? "))

mde = int(input("Tryck 1 för text-fil och 2 för CSV-fil: "))

if not mde in [1,2]:
	print ("Endast 1 eller 2 möjliga val. Avbryter.")
	quit()

urls = ["", "https://spela.svenskaspel.se/stryktipset" , "https://spela.svenskaspel.se/europatipset"]

url = urls[gamemode]

outfiles = ["","tips.txt","tips.csv"] # namn för dina output-filer
outfile = outfiles[mde]

response = requests.get(url)
html_content = response.text

pattern = r'_svs\.tipsen\.data\.preloadedState\s*=\s*(\{.*\});'
match = re.search(pattern, html_content)
json_str = match.group(1)
json_obj = json.loads(json_str)
gameDict = json_obj["EventTypeStatistic"]
gameKeys = list(dict.keys(gameDict))

signlists = []
for _ in range(0,3):
	signlists.append(list())

for gameKey in gameKeys:
	game = gameDict[gameKey]["distributions"][str(gamemode)]["Global"]["current"]["value"]
	for ix,perc in enumerate(game):
		signlists[ix].append(int(perc))


P = { "1": signlists[0], "X": signlists[1], "2": signlists[2] } 

rows = itertools.product(*(['1X2'] * 13))

cn = 0

with open(outfile, 'w') as f:  
	for row in rows:
		percentage = sum(P[result][n] for (n, result) in enumerate(row))
		
		if pmin <= percentage <= pmax:
			cn += 1
			if mde==1:
				f.write("E,"+','.join(row)+"\n")
			if mde==2:
				f.write(','.join(row + (str(percentage),))+"\n")

print(f"{outfile} skapad med {cn} rader!")
__________________
Senast redigerad av Enterprise 2023-08-29 kl. 21:45.
Citera
2023-08-30, 06:43
  #100
Medlem
Citat:
Ursprungligen postat av Enterprise
Sidorna är nog annorlunda uppbyggda så då får man skapa en meny i början av skriptet där man får välja.
Stryktipset antar jag är lättast att inkludera. Fullträff är ju ett helt annat spel med 8 alternativ per match = någon med vass mattehjärna får komma på hur det ska kalkyleras. Jag är hyfsat bra på att skapa automatisering, däremot inte att räkna ut lämplig beräkningsmodell.

Coolt att du fick till det även med stryktipset

Fullträff är ju nog näst intill omöjligt att sätta 13 rätt, men då det intressanta är att ha minst antal fel på raden som gäller så är det bara reducerat som gäller.
Du skriver: Jag är hyfsat bra på att skapa automatisering, däremot inte att räkna ut lämplig beräkningsmodell
Jag skulle själv då vilja skriva: Jag är hyfsat bra på att räkna ut lämplig beräkningsmodell, däremot inte att skapa automatisering

Eftersom det är samma beräkningsmodell även för fullträff som för tipset, dvs bara summera.
Men som jag nämnde så tror jag att det kanske blir väldigt många rader om man bara väljer en summa och därför måste man nog använda sig av odds, dvs det som står under streckprocenten där det hämtas.

Jag tänker att det ser ut så här med antal mål högst upp och oddsen per match under:

0 1 2 3 4 5
14,8 5,85 3,81 3,66 4,55 6,45
15,5 6,85 4 3,72 4,15 6,15
15,5 6,1 3,92 3,57 4,4 6,6
9,55 3,63 3,01 3,75 6,05 11,5
10,6 3,87 3,03 3,7 5,75 10,8
9,5 3,75 3,29 4,1 6,1 13,4
9,75 3,75 3,19 4,05 6,55 12,6
9,1 3,64 3,16 4,15 6,7 14,1
12,5 4,9 3,44 3,8 5,3 9,4
11,2 4,35 3,22 3,91 5,95 10,6
9,2 3,62 3,24 4,1 6,7 13,7
10,4 4 3,25 3,92 6,3 11,8
11,7 4,5 3,34 3,79 5,7 10,2

Beräkningen sedan, är ju 100 / oddset på varje:

6,756756757 17,09401709 26,24671916 27,32240437 21,97802198 15,50387597
6,451612903 14,59854015 25 26,88172043 24,09638554 16,2601626
6,451612903 16,39344262 25,51020408 28,01120448 22,72727273 15,15151515
10,47120419 27,54820937 33,22259136 26,66666667 16,52892562 8,695652174
9,433962264 25,83979328 33,00330033 27,02702703 17,39130435 9,259259259
10,52631579 26,66666667 30,39513678 24,3902439 16,39344262 7,462686567
10,25641026 26,66666667 31,34796238 24,69135802 15,26717557 7,936507937
10,98901099 27,47252747 31,64556962 24,09638554 14,92537313 7,092198582
8 20,40816327 29,06976744 26,31578947 18,86792453 10,63829787
8,928571429 22,98850575 31,05590062 25,57544757 16,80672269 9,433962264
10,86956522 27,62430939 30,86419753 24,3902439 14,92537313 7,299270073
9,615384615 25 30,76923077 25,51020408 15,87301587 8,474576271
8,547008547 22,22222222 29,94011976 26,38522427 17,54385965 9,803921569

Summan per match blir då följande:

114,9017953
113,2884216
114,245252
123,1332494
121,9546465
115,8344923
116,1660808
116,2210653
113,2999426
114,7891103
115,9729593
115,2424116
114,442356

Den summan måste då ner till 100, och då tar man helt enkelt de nya siffrorna / med nya summan * 100:

6,756756757 17,09401709 26,24671916 27,32240437 21,97802198 15,50387597

Blir då istället omräknat:

5,8804623 14,87706702 22,84274069 23,77891859 19,12765759 13,49315381

med summan 100 i alla matcher.

Det är mycket effektivt sätt att få ner radantalet per streckprocent.

Sedan kom jag på en liten annan justering som borde vara bättre att använda sig av än Min - Max, nämligen att man anger en önskad streckprocent summa i steg 1 (nuvarande golv) och i nästa sätter man hur långt ifrån den (nuvarande tak), t.ex. om jag sätter 500 på första och sedan 10 på nästa så tillåter jag att jag har gissat fel upptill 10% enheter ifrån både uppåt och neråt så i praktiken blir intervallet 490 - 510, men behöver man justera så känns det bättre på det här sättet om man är säker på att resultatet hamnar omkring 500 som utgång, så hur mycket fel har man råd med

Nåväl, Fullträff tror jag stenhårt på, 16,5 tusen om du har 4 fel på raden, på stryktipset är det 0:- på den bedriften.

"nya" intervallet kan vara nödvändigt på fullträff om det visar sig att det ändå är för många rader per streckprocent så kanske man behöver kunna sätta t.ex. 250 och +- 0,5% enheter ifrån.

Summa summarum, beräkningsmodellen är ju densamma, men som jag sett hittills har jag inte sett några odds utanför de 6 mest spelade, dvs. 0-5 mål, vilket miskar totala antalet möjliga rader från 550 till 13 och eftersom det redan nu går ruskigt fort så borde det inte ta de 6 dagar som nämns i ett reduceringsverktyg att det skulle ta att köra igenom så många
Citera
2023-08-30, 16:29
  #101
Medlem
Enterprises avatar
Citat:
Ursprungligen postat av Mysadname
Blir då istället omräknat:

5,8804623 14,87706702 22,84274069 23,77891859 19,12765759 13,49315381
med summan 100 i alla matcher.
Hjälp mig nu förstå, vad har du åstadkommit med ovanstående beräkning? Jag tror jag förstår hur du matematiskt har kommit dit, men däremot inte var du ska använda det till.

Eftersom du utgår från oddsen så har du ett vinstutfall på olika resultat i en viss match (där 0 motsvarar 5,88).
Vad betyder 5,88 här? Jämför du 5,88 med oddset på 0 mål i match 1?
Eller hur tänkte du använda detta?
Citera
2023-08-30, 16:47
  #102
Medlem
Citat:
Ursprungligen postat av Enterprise
Hjälp mig nu förstå, vad har du åstadkommit med ovanstående beräkning? Jag tror jag förstår hur du matematiskt har kommit dit, men däremot inte var du ska använda det till.

Eftersom du utgår från oddsen så har du ett vinstutfall på olika resultat i en viss match (där 0 motsvarar 5,88).
Vad betyder 5,88 här? Jämför du 5,88 med oddset på 0 mål i match 1?
Eller hur tänkte du använda detta?

Istället för att använda streckprocenten utan decimaler så använder man de omräknade värdena för att som vanligt summera raderna.
Exakt så som du har skrivit det, jag tolkar det som du har förstått även fast jag fick läsa 2 gånger 🙂

Och kan man då som jag föreslog utgå från en summa och sätt en differens ifrån den i decimal form, tex 250 summa och +- 0,5 från den så vore det kanon
Citera
2023-08-30, 17:26
  #103
Medlem
Citat:
Ursprungligen postat av Mysadname
Istället för att använda streckprocenten utan decimaler så använder man de omräknade värdena för att som vanligt summera raderna.
Exakt så som du har skrivit det, jag tolkar det som du har förstått även fast jag fick läsa 2 gånger 🙂

Och kan man då som jag föreslog utgå från en summa och sätt en differens ifrån den i decimal form, tex 250 summa och +- 0,5 från den så vore det kanon

Hmm, nu läste jag en gång till, reagerade på ordet "jämför", hoppas du förstod vad jag skrev ovan, man kan väl säga att det 5,88 motsvarar den nya streckprocenten för att försöka förklara den omräknade siffran, eftersom summan per match blir för hög när man tar 100/ odds så måste den räknas om på det sätt jag skrev och då får man ju ut den 5,88 för 0 mål i match 1.
__________________
Senast redigerad av Mysadname 2023-08-30 kl. 17:28.
Citera
2023-08-30, 19:38
  #104
Medlem
Enterprises avatar
Citat:
Ursprungligen postat av Mysadname
Istället för att använda streckprocenten utan decimaler så använder man de omräknade värdena för att som vanligt summera raderna.
Exakt så som du har skrivit det, jag tolkar det som du har förstått även fast jag fick läsa 2 gånger 🙂

Och kan man då som jag föreslog utgå från en summa och sätt en differens ifrån den i decimal form, tex 250 summa och +- 0,5 från den så vore det kanon
Jaha, så du menar att det är en tvåstegsraket.
1. Man går igenom match för match och normalfördelar oddsen på 0,1,2,3,4,5 (man struntar i 6 och 7+) så att varje rad summerar till 100.

2. Sen iterar man genom alla 6 olika kombinationer på alla 13 rader för att summera de normalfördelade oddsen.
Det blir i så fall ~13 miljarder (motsvarande 6¹³) kombinationer att iterera över, cirka 815 gånger fler än i ett tipssystem (med sina 1,6 miljoner kombinationer). Om tipset tar cirka 3 sekunder att beräkna så bör fulltips ta cirka 40 minuter. Är det värt detta?
__________________
Senast redigerad av Enterprise 2023-08-30 kl. 19:41.
Citera
2023-08-30, 19:40
  #105
Medlem
Citat:
Ursprungligen postat av Enterprise
Jaha, så du menar att det är en tvåstegsraket.
1. Man går igenom match för match och normalfördelar oddsen på 0,1,2,3,4,5 (man struntar i 6 och 7+) så att varje rad summerar till 100.

2. Sen iterar man genom alla 6 olika kombinationer på alla 13 rader för att summera de normalfördelade oddsen.
Det blir i så fall 13 miljarder (motsvarande 6¹³)kombinationer att iterera över, cirka 815 gånger fler än i ett tipssystem (med sina 1,6 miljoner kombinationer). Om tipset tar cirka 3 sekunder att beräkna så bör fulltips ta cirka 40 minuter. Är det värt detta?

Oh ja, absolut värt det, det är ju helt klart värt den tiden 😃
Citera
2023-08-30, 19:44
  #106
Medlem
Enterprises avatar
Citat:
Ursprungligen postat av Mysadname
Oh ja, absolut värt det, det är ju helt klart värt den tiden 😃
Eftersom vi pratar om 13 miljarder kombinationer så tror jag inte heller det går att spara utfallet hos alla (drar för mycket minne) utan att man spara enbart de rader som håller sig inom det (snäva) intervallet.

Jag skulle tro att just den här beräkningen skulle må bättre av att göras i ett lågnivåspråk som är betydligt snabbare än Python, men vore kul att testa i Python också, även om jag aldrig haft tålamodet att vänta så länge på en körning. Lyckligtvis kan man ju testa köra med ett lägre antal rader, bara principen funkar. Jag ska se vad jag kan få ihop.
Citera
2023-08-30, 19:52
  #107
Medlem
Citat:
Ursprungligen postat av Enterprise
Eftersom vi pratar om 13 miljarder kombinationer så tror jag inte heller det går att spara utfallet hos alla (drar för mycket minne) utan att man spara enbart de rader som håller sig inom det (snäva) intervallet.

Jag skulle tro att just den här beräkningen skulle må bättre av att göras i ett lågnivåspråk som är betydligt snabbare än Python, men vore kul att testa i Python också, även om jag aldrig haft tålamodet att vänta så länge på en körning. Lyckligtvis kan man ju testa köra med ett lägre antal rader, bara principen funkar. Jag ska se vad jag kan få ihop.

Lågnivåspråk, har jag aldrig hört talas om, men jag har ju aldrig varit så bra på språk.

Har du fått till det med differens jag skrev, så kan du ju sätta en summa och kanske +- 0,05 ifrån. Eller för att vara säker på att bara få ut 1 rad, kolla summan av de 13 högsta eller 13 lägsta värdena. Då får du ju reda på tiden det tar och det blir bara 1 rad.
Citera
2023-08-30, 20:00
  #108
Medlem
Enterprises avatar
Citat:
Ursprungligen postat av Mysadname
Lågnivåspråk, har jag aldrig hört talas om, men jag har ju aldrig varit så bra på språk.

Har du fått till det med differens jag skrev, så kan du ju sätta en summa och kanske +- 0,05 ifrån. Eller för att vara säker på att bara få ut 1 rad, kolla summan av de 13 högsta eller 13 lägsta värdena. Då får du ju reda på tiden det tar och det blir bara 1 rad.
Lågnivåspråk i det här fallet är typ C eller Rust som oftast är betydligt snabbare på att göra stort antal beräkningar jämför med Python, men kräver mer ansträngning att skriva.

Förstår jag dig rätt att du vill att summan av alla 13 kombinationer ska kunna bli ett visst tal (med en viss felmarginal), t.ex. att summan ska bli 200 med felmarginal på +/-0,05 (i intervallet 199,95 - 200,05)?
Alltså om skriptet märker att summan är större än intervallet så kan den sluta räkna och gå vidare till nästa iteration?

Glöm inte bort att för att "bara" räkna ut den högsta och lägsta raden (även om du bara sparar två rader i minnet) så måste man iterera över 13 miljarder kombinationer.
Citera

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Det är enkelt att registrera ett nytt konto

Bli medlem

Logga in

Har du redan ett konto? Logga in här

Logga in