Tre Tärningar
Re: Tre Tärningar
Nu kan man ge sig i kast med vadslagning!
Man ska slå vad med personer som har mindre koll än en själv!
Man ska slå vad med personer som har mindre koll än en själv!
Re: Tre Tärningar
Vet inte om detta ger rättvisande resultat.
Men sedan beror det väl på vilken dator man har.
Finns det sätt att modifiera min kod en aning och få bättre prestanda?
I energisparläge:
I högprestandaläge:
Men sedan beror det väl på vilken dator man har.
Finns det sätt att modifiera min kod en aning och få bättre prestanda?
Kod: Markera allt
public class Dice {
public static void main(String[] args) {
long startTime = System.nanoTime();
Dices dices;
dices = new Dices();
int[] allDices = new int[216];
int antalProdukter;
int produkt;
int[] twoDiceProduct = dices.twoDiceProduct();
allDices = dices.allDices(twoDiceProduct);
produkt = 24;
antalProdukter = dices.search(produkt, allDices);
long endTime = System.nanoTime();
System.out.println("Antal Tärningskast som ger " + produkt + " är " + antalProdukter);
long timeElapsed = endTime - startTime;
System.out.println("Execution time in microseconds : " + timeElapsed / 1000);
}
}
Kod: Markera allt
Antal Tärningskast som ger 24 är 15
Execution time in microseconds : 609
Kod: Markera allt
Antal Tärningskast som ger 24 är 15
Execution time in microseconds : 353
Re: Tre Tärningar
Sedan om man mäter tiden utan att ta med variabeldeklarationerna så blr det betydlig skillnad.
Hur ska man mäta egentligen?
Hur ska man mäta egentligen?
Kod: Markera allt
public class Dice {
public static void main(String[] args) {
Dices dices;
dices = new Dices();
int[] allDices = new int[216];
int[] twoDiceProduct = new int[36];
int antalProdukter;
int produkt =24;
long startTime = System.nanoTime();
twoDiceProduct = dices.twoDiceProduct();
allDices = dices.allDices(twoDiceProduct);
antalProdukter = dices.search(produkt, allDices);
long endTime = System.nanoTime();
System.out.println("Antal Tärningskast som ger " + produkt + " är " + antalProdukter);
long timeElapsed = endTime - startTime;
System.out.println("Execution time in microseconds : " + timeElapsed / 1000);
}
}
Kod: Markera allt
Antal Tärningskast som ger 24 är 15
Execution time in microseconds : 14
Re: Tre Tärningar
Det skulle vara kul att testa din kod i Java men vet inte hur det ska översättas.
Kan man teckna den koden som en generell algoritm?
Kan man teckna den koden som en generell algoritm?
Kod: Markera allt
from itertools import product
from operator import mul
from functools import reduce
from collections import defaultdict
sols = defaultdict(list)
N_dice = 3
dices = (range(1,7),)*N_dice
for vals in product(*dices):
sols[reduce(mul, vals)].append(vals)
for k,v in sorted(sols.items()):
if len(v):
print(f"For {k} there are {len(v)} combinations, {len(v)/6**N_dice*100:0.2f}%")
Re: Tre Tärningar
Jag trigga lite på det och sannolikt en felläsning.. och gjorde en liten graf över alla summorna och hur många kombinationer som fanns för varje (ja brute force i excel...)
det är lite svår att se exakt vilket värde varje stapel motsvara
Kod: Markera allt
1 1
2 3
3 3
4 6
5 3
6 9
8 7
9 3
10 6
12 15
15 6
16 6
18 9
20 9
24 15
25 3
27 1
30 12
32 3
36 12
40 6
45 3
48 9
50 3
54 3
60 12
64 1
72 9
75 3
80 3
90 6
96 3
100 3
108 3
120 6
125 1
144 3
150 3
180 3
216 1
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Re: Tre Tärningar
Det blev tjusigt.
Ger bra överblick.
Nu skulle varje stapel ha ggr pengarna också.
Om man slår vad med 3 tal per spelare så är det
kanske idé att lägga pengarna till vänstra delen av kurvan.
Ger bra överblick.
Nu skulle varje stapel ha ggr pengarna också.
Om man slår vad med 3 tal per spelare så är det
kanske idé att lägga pengarna till vänstra delen av kurvan.
Re: Tre Tärningar
Här är ett sätt som borde gå att struta ner till en kod,
Kod: Markera allt
produkt = 24
24, 12, 8, 6, 4, 2 och 1 delar 24 jämt upp.
Tärningar A, B och C
AxB C
-----------
24 1
12 2
8 3
6 4
4 6
2 -
1 -
Sedan räcker det med att ta reda på hur många
sätt AxB kan bli 24, 12, 8, 6 resp. 4 och det
är 2, 4, 2, 4 och 3 summan blir 15.
Re: Tre Tärningar
Så här blir det på mer matematiskt nivå.
Addera sannolikheter.
Först sannolikheten att få olika produkter av 2 tärningar och
sedan de kombinationer som med tärning 3 ger det sökta talet.
Samma som innan men lite tydligare kanske,
Addera sannolikheter.
Först sannolikheten att få olika produkter av 2 tärningar och
sedan de kombinationer som med tärning 3 ger det sökta talet.
Samma som innan men lite tydligare kanske,
Kod: Markera allt
1 1/36
2 2/36
3 1/36
4 3/36
5 2/36
6 4/36
7 0
8 2/36
9 1/36
10 2/36
11 0
12 4/36
13 0
14 0
15 2/36
16 1/36
17 0
18 2/36
19 0
20 2/36
21 0
22 0
23 0
24 2/36
25 1/36
26 0
27 0
28 0
29 0
30 2/36
31 0
32 0
33 0
34 0
35 0
36 1/36
24
24 x 1
12 x 2
8 x 3
6 x 4
4 x 6
3 x -
2 x -
1 x -
2/36 + 4/36 + 2/36 + 4/36 + 3/36 = 15/36