How RNGdle works
One seeded roll per UTC day. Twenty-nine trait checks. One honest score.
The rules
- At every UTC midnight, a new daily number between 0 and 1,000,000 goes live.
- Anonymous visitors get a shared practice roll (seeded by the date, same for everyone, saved only in the browser). Signed-in players get an official personal roll — generated and scored server-side, one per person per day.
- Your first visit of the day reveals it slot-machine style. Revisits show it instantly.
- The number is analyzed for rare mathematical and pattern traits; rarer traits score higher.
- Official rolls earn EP and count toward your streak and the leaderboard.
- Share your result spoiler-free — the share text shows trait squares, never the number.
- Want more? Free rolls are unlimited and never saved.
EP — Energy Points
EP is the leaderboard currency, earned only by official rolls. The formula is exponential in the rarity score, so a lucky roll massively out-earns a common one:
EP = floor( e^(score / 2) × 100 ) score 4.2 (Trash) → 816 EP score 7 (Common) → 3,311 EP score 12 (Epic) → 40,342 EP score 20 → 2,202,646 EP score 25 (Mythic) → 26,833,728 EP
Official rolls are personal: the server derives your number from mulberry32(hash(SESSION_SECRET : UTCdate : userId)) — deterministic and verifiable, but unknowable in advance. One roll per person per day; the database enforces it. Rolling on consecutive UTC days grows your streak.
The daily seed
seed = hash("rngdle-" + YYYYMMDD) // UTC date, e.g. "rngdle-20260915"
number = floor(mulberry32(seed) * 1_000_001) // integer in [0, 1,000,000]mulberry32 is a tiny, fully deterministic PRNG. Feed it the same 32-bit seed and it produces the same stream on every device, forever — so the “roll” needs no server and can be verified by anyone.
Scoring
Each trait scores bits of surprise: if a trait appears in c of the 1,000,001 numbers, it earns -log2(c / 1,000,001) bits, capped at 20. Traits are sorted by bits and summed with a 0.5 decay per additional trait — your best trait counts in full, the second at half, the third at a quarter, and so on.
Every number also carries its digit sum, scored by how rare that sum is across the range — so no roll is ever truly zero. Counts are exact: we analyzed every number at build time.
Rarity tiers
| Tier | Score | What it means |
|---|---|---|
| Trash | ≤ 4.2 | Bottom ~1% of all rolls. A truly forgettable number. |
| Common | ≥ 6 | An everyday number. Nothing to write home about. |
| Uncommon | ≥ 6.9 | A little sparkle. Better than about half of all numbers. |
| Rare | ≥ 7.8 | Top ~28%. Now we are talking. |
| Epic | ≥ 9.3 | Top ~12%. Screenshot-worthy. |
| Anomaly | ≥ 12.6 | Top ~4%. The machine blinked. |
| Mythic | ≥ | Top ~1%. Tell everyone. Immediately. |
All traits, with exact counts
Out of 1,000,001 numbers, rarest first. Digit-sum scores separately per sum.
| Trait | Count | 1 in | Meaning |
|---|---|---|---|
| Named number | 12 | 83,333 | A number the internet (or history) gave a name to. |
| Power of two | 20 | 50,000 | 2 raised to some exponent, like 65536 = 2¹⁶. |
| Ascending sequence | 22 | 45,455 | Every digit is exactly one more than the last, like 123456. |
| Descending sequence | 26 | 38,462 | Every digit is exactly one less than the last, like 654321. |
| Fibonacci number | 30 | 33,333 | Lives in the Fibonacci sequence. |
| All same digit | 45 | 22,222 | Every digit is identical, like 777777. |
| Perfect cube | 101 | 9,901 | An integer cubed, like 91125 = 45³. |
| ABAB pattern | 180 | 5,556 | Two digits alternating, like 1212 or 565656. |
| Monster digit run | 181 | 5,525 | Five or more of the same digit in a row. |
| ABCABC pattern | 900 | 1,111 | A three-digit block repeated twice, like 456456. |
| Round number | 1,000 | 1,000 | A clean multiple of 1,000. |
| Perfect square | 1,001 | 999 | An integer times itself, like 729 = 27². |
| Triangular number | 1,414 | 707 | Counts dots in a triangle: 1, 3, 6, 10, … |
| Rising run | 1,865 | 536 | Contains 4+ digits climbing by one, like 883456. |
| Falling run | 1,962 | 510 | Contains 4+ digits dropping by one, like 965432. |
| Palindrome | 1,989 | 503 | Reads the same forwards and backwards. |
| Quadruple digit run | 2,520 | 397 | Four of the same digit in a row. |
| Two distinct digits | 4,537 | 220 | Built from exactly two different digits. |
| Triple digit run | 33,219 | 30 | Three of the same digit in a row. |
| Alternating odd/even | 34,875 | 29 | Odd and even digits strictly alternate. |
| Prime | 78,498 | 13 | Divisible only by 1 and itself. |
| Harshad number | 95,428 | 10 | Divisible by the sum of its own digits. |
| Zigzag | 136,425 | 7 | Digits strictly alternate up-down-up-down. |
| Happy number | 143,071 | 7 | Repeatedly summing squared digits reaches 1. |
| All digits unique | 167,832 | 6 | No digit repeats anywhere. |
| Semiprime | 210,035 | 5 | A product of exactly two primes. |
| First < last | 399,996 | 3 | The first digit is smaller than the last. |
| Zero-free | 597,870 | 2 | Contains no zero digit at all. |
Named numbers (42, 666, 1337, …) score as one-of-a-kind: 1 in 1,000,001.
FAQ
How is the daily number chosen?
The number is floor(mulberry32(hash("rngdle-YYYYMMDD")) * 1,000,001) using the UTC date. It is deterministic, so every player rolls the same number and anyone can reproduce it.
How is the rarity score calculated?
Each trait contributes -log2(count / 1,000,001) bits, clamped to 20. Traits are sorted by bits and summed with a 0.5 decay per additional trait.
What are the rarity tiers?
Seven tiers from Trash (bottom 1%) to Mythic (top 1%), with thresholds computed from the score distribution of all 1,000,001 numbers at build time.
Want the deep dives? Browse the pattern library —14 patterns with examples and stats.