Spaces:
Sleeping
Sleeping
| from __future__ import annotations | |
| import math | |
| def collision_probability(d: int, delta: int, k: int) -> float: | |
| denom = math.comb(d, k) | |
| total = 0.0 | |
| for r in range(0, min(k, delta) + 1, 2): | |
| total += math.comb(delta, r) * math.comb(d - delta, k - r) / denom | |
| return total | |
| def recommended_params(d: int, delta: int, lam: int = 40) -> tuple[int, float, int]: | |
| k = math.ceil(d / (delta + 1)) | |
| p_delta = collision_probability(d, delta, k) | |
| p_delta = min(max(p_delta, 1e-9), 1.0 - 1e-9) | |
| l_min = math.ceil(lam / (-math.log2(1.0 - p_delta))) | |
| return k, p_delta, l_min | |