FAIR DRAW LAB

31,103 tickets. Same weight.

2026-09-18

A famous verse and a verse you have never noticed start under the same rules. Here is the 30-second version of how Bible Gacha keeps the standard draw fair. If you enjoy the nerdy stuff, the technical receipts are farther down.

Draw slots31,103in the standard pool
Hidden weightingNoneone entry per slot
History adjustmentNonepast results do not change the next odds

Picture one enormous draw box

The standard draw uses 31,103 Scripture slots. Think of 31,103 tickets with the same size and weight sitting in one box.

John 3:16 does not secretly get extra copies. A verse missing from your Collection does not get a hidden boost. And an AI does not decide that one verse “fits you today” and change the standard odds.

Bible translations do not always divide verses in exactly the same way, so the app uses shared internal draw IDs. The precise implementation is in “Go deeper” below.

“Why do I keep seeing Psalms?” Is the draw favoring it?

Every individual slot has the same chance, but books contain different numbers of verses. A large book such as Psalms naturally owns more tickets in the box than a tiny book.

That is not book-level weighting. It is what equal odds per verse look like. And it is also why meeting all 66 books is worth celebrating.

The computer dice are the strong kind

When Bible Gacha chooses a Scripture slot, it uses the browser's built-in random-number function intended for security-sensitive work. Math.random() is not used to decide the winning Scripture.

The technical name is crypto.getRandomValues(). The short version: it gives us a much harder-to-predict roll.

If the numbers do not divide evenly, we do not force them

Imagine assigning 10 numbered balls to 3 people by remainder. Somebody ends up with four numbers while the others get three. A microscopic version of that problem can happen if a huge computer number is pushed directly into 31,103 slots.

So when a value lands in the tiny leftover region that cannot be shared evenly, Bible Gacha throws that value away and rolls again.

The technical name is rejection sampling. The bias it avoids is called modulo bias.

The same verse appeared twice. Bug?

No. Random does not mean “perfectly spaced out.” Repeats and clusters are normal. Bible Gacha does not lower the next odds because something appeared recently.

What if loading the verse text fails?

We do not silently replace the winner. The selected Scripture stays selected and the app retries displaying that same result instead.

Theme draws simply use a smaller box

Theme draws intentionally narrow the eligible pool first. Inside that smaller pool, each slot still gets one entry.

For first-time readers26 slots
When anxious27 slots
When sad27 slots
When low on energy24 slots

What the standard draw does not do

  • Secretly boost popular verses
  • Favor missing Collection entries to help you complete faster
  • Suppress recent results because “you just saw that one”
  • Replace a winner because its text failed to load
  • Assign SSR/R/N-style value tiers to Scripture

Go deeper — the technical receipts

You can stop here and enjoy the draw. But if you want to see exactly how far we take the fairness checks, everything below is here for you.

What exactly are the 31,103 draw slots?

To normalize verse-boundary differences across translations, Bible Gacha uses shared canonical Scripture IDs as draw units. The current standard pool contains 31,103 unique IDs.

If a translation returns multiple verses as one display segment, that presentation detail does not change the winning odds.

Show me the RNG and bias-avoidance details

The draw uses Web Crypto's crypto.getRandomValues(). Browser implementations use a cryptographically suitable pseudorandom generator initialized from strong platform randomness.

Because 2^32 is not evenly divisible by 31,103, values above the largest evenly mappable range are discarded and redrawn. That is rejection sampling.

We do not describe this as “true random.” We describe it as cryptographically strong random values from Web Crypto.

What are all those SHA-256 values for?

Think of SHA-256 as a fingerprint for the draw pool. Change even one character and the fingerprint changes. Before drawing, the app checks that the pool matches the expected fingerprint and fails closed if it does not.

Standard pool31,103
Algorithmfair-draw/v1
Weightingnone
Automatic exclusionsnone

Standard-pool fingerprint

bc6fbe0c6855f2e1c32f8c7ad171409b22606e24f28ccc5900e8ea3607dd4dea

Theme-pool fingerprints

ThemeCountSHA-256
First-time readers26f3178b9c83d79e73750c03e469325ec5cb689936e4d020d359db6e786cc71b53
Anxiety27325ef721119f430ea810f208eadc1794d17ab1043ad133194b57028b78a8423a
Sadness271303f1124a67a17d812b6ce1a2345f60088e757e1badf6ab6564a1ea704e65b5
Low energy2486c3ab3b921f77e00292062cc6fc70b293ed45f7940f128b94777e4a64b11f36
Can a huge simulation prove the RNG is fair?

Large statistical tests are useful for finding implementation mistakes, but they cannot by themselves prove that a random-number generator is absolutely suitable. NIST explicitly warns about that limitation.

So Bible Gacha publishes more than “we ran it many times.” We publish the random source, mapping method, eligible pools, and verification fingerprints too.

References

If the algorithm or pools change, this page changes with them.