simonjegou commited on
Commit
957fb5d
·
verified ·
1 Parent(s): 801ea96

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +4 -11
app.py CHANGED
@@ -23,17 +23,10 @@ Rk = np.indices((6,) * 6).reshape(6, -1).T
23
  Rk = Rk[Rk.sum(axis=1) <= 5] # size 462
24
  R5 = Rk[Rk.sum(axis=1) == 5] # size 252
25
 
26
- # Compute R (all combinations of up to 5 dice)
27
- R = np.indices((7,) * 5).reshape(5, -1).T
28
- R = np.array([np.bincount(r, minlength=7)[1:] for r in R])
29
- R = [R[R.sum(axis=1) == i] for i in range(6)]
30
-
31
- # Calculate probabilities (P) of each R5 outcome from each Rk roll
32
- P = np.zeros((len(Rk), len(R5)))
33
- R5_indices = {tuple(r): i for i, r in enumerate(R5)}
34
- for i, rk in enumerate(Rk):
35
- for r in R[5 - rk.sum()]:
36
- P[i, R5_indices[tuple(rk + r)]] += 1
37
  P /= P.sum(axis=1, keepdims=True)
38
  M = (P > 0).T # Mask for valid transitions
39
 
 
23
  Rk = Rk[Rk.sum(axis=1) <= 5] # size 462
24
  R5 = Rk[Rk.sum(axis=1) == 5] # size 252
25
 
26
+ # Calculate probabilities (P) of each R5 outcome from each Rk roll using multinomial weights
27
+ fact = np.array([1, 1, 2, 6, 24, 120])
28
+ Δ = R5[None, :] - Rk[:, None] # Δ[rk, r5, i]: number of die #i missing to go from Rk[rk] to R5[r5]
29
+ P = np.where((Δ >= 0).all(axis=2), fact[Δ.sum(axis=2)] // np.prod(fact[Δ.clip(min=0)], axis=2), 0)
 
 
 
 
 
 
 
30
  P /= P.sum(axis=1, keepdims=True)
31
  M = (P > 0).T # Mask for valid transitions
32