Re: Tre Tärningar
Postat: 6 november 2020, 12:12:32
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!
Svenskt forum för elektroniksnack.
https://elektronikforumet.com/forum/
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
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
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}%")
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...)
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
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.
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