Cryptographically Secure · Uniform Distribution · Rejection Sampling
Each roll uses crypto.getRandomValues() to generate a cryptographically secure random byte.
Rejection sampling discards values that would create modulo bias. For example, a d6 rejects any byte above 251, keeping 252 values that divide evenly by 6.
| Die | Keep Range | Reject % |
|---|