# Poker randomizer: independent draws versus a quota

Original GTO Gecko teaching calculation. Created 2026-09-05. These files contain no observed player data or product RNG measurements. Bet and Check are abstract labels; 30% is a supplied teaching probability, not a solved poker action frequency.

## Reproduce

Download all eight files in this directory into one folder: README.md, generate.py, verify.mjs, results.json, sequences.csv, mapping.csv, next-action.svg and MANIFEST.sha256. Use Python 3.11+ and Node.js 18+; only their standard libraries are required. No dependency installation is needed.

From that folder run:

```
python generate.py
node verify.mjs
```

The generator deterministically replaces only results.json, sequences.csv and mapping.csv beside itself. It does not refresh checksums or overwrite other files. The verifier checks the data, seven deliberate in-memory data corruptions, and four manifest corruptions. MANIFEST.sha256 lists the SHA-256 of every other distributed file; it records the published bytes, not a self-certification of the reasoning. The verifier checks those hashes automatically when the manifest is present and explicitly reports a development-only skip if it is absent. A publication-bundle check requires the manifest to be present. All distributed text uses UTF-8 and LF newlines.

## Models and inputs

- N = 10 eligible attempts, supplied Bet probability p = 3/10.
- Independent: every attempt uses a fresh independent Bernoulli(p) draw. An ordered B/C sequence with k Bets has exact probability p^k(1-p)^(10-k). All 2^10 = 1,024 sequences are possible, with unequal weights.
- Quota: uniformly shuffle three Bet labels and seven Check labels, then draw without replacement. Each of C(10,3) = 120 distinct action sequences has probability 1/120; the other sequences have zero probability. It is equivalent to uniformly shuffling ten distinct cards, three marked Bet, and then discarding their identities.
- These are exhaustive calculations, with no random seed, sampling error or sample-size estimate. Fractions are exact; article percentages round only for display.

## Outputs

- results.json: fixed input settings; sequence counts; exact Bet-count distributions; marginal Bet probabilities and optimal next-action guessing accuracy at each position; five prefix examples; mean guessing accuracy across the ten positions.
- sequences.csv: all 1,024 ordered B/C sequences and each model's rational weight, including zero quota weights. B = Bet, C = Check.
- mapping.csv: all 100 integers from 1 through 100. Two-action map: Bet 1–30, Check 31–100. Three-action map: Small 1–40, Large 41–75, Check 76–100. Endpoints are inclusive. The map assigns supplied whole-percent frequencies; it does not generate or certify random numbers.
- next-action.svg: accessible diagram of the CCC and BBB conditional probabilities, with equivalent article text/table.

## Observer experiment

The observer knows the policy, exact block start, block length and every previous eligible action, but not the next draw or the remaining shuffled order. At each position the observer guesses whichever next action is more probable, conditional on that full history. The generator sums the larger of the two joint probability masses for each history. The independent verifier uses binomial and hypergeometric formulas instead of importing the generator. A tied guess can choose either action.

Independent accuracy is 7/10 at all ten positions. Quota accuracy is 7/10 at positions 1–5, 43/60 at 6–7, 23/30 at 8–9, and 1 at 10. Averaging the ten positions equally gives 56/75 (about 74.67%) versus 7/10 (70%). These are probabilities of correctly guessing an abstract next label, not player-performance metrics.

## Checks and scope

The verifier checks all JSON fields, every ordered CSV sequence/weight, and every integer mapping. Its probability formulas independently verify that both policies have 30% marginal Bet probability at every position, while quota conditional probabilities depend on the used labels. It rejects deliberate count, dependence, weighting, duplicate-sequence and mapping-boundary corruptions.

No cards, ranges, position, stacks, pot, betting responses, rake, ICM, bounties or payoff exist in this model. A real opponent may not know which private-hand decisions were eligible for a policy or where a quota starts. No estimate of poker exploitability, winnings, chip EV, real-world detection, fairness of an RNG, or optimal strategy follows. Independent draws are the procedure studied here, not a theorem restricting every possible representation of a mixed strategy.

## References and reuse

Accessed 2026-09-05: NIST binomial formula (https://itl.nist.gov/div898/handbook/eda/section3/eda366i.htm); Philip B. Stark's discrete-distribution notes (https://www.stat.berkeley.edu/~stark/Teach/S240/Notes/ch2.htm). Article: https://gtogecko.com/blog/poker-randomizer.

All calculation code, data and the diagram were created for this article. No third-party visual, licensed dataset, proprietary poker range or private repository source is included.
