BeamNG.Earth
BeamNG.drive용 1:1 비율 실시간 지구, 실제 고도·위성 이미지·부동 원점·보조 서버에서 LOD 스트리밍
Hookah Pookah poker calculator with exact enumeration and honest Monte Carlo error bars. Hold'em, Short Deck, PLO4 and PLO5 equities, weighted ranges, hand chances and every next card, all in your bro
게임TypeScript · CSSGitHub @KarthikSubramanian07온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기Exact-enumeration and Monte Carlo poker odds engine for Hold'em, Short Deck and PLO: equities, ranges, hand-type chances and next-card outs, all in your browser.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
What are the chances? Poker odds that tell you exactly, or tell you exactly how sure they are.
Hookah Pookah is a poker equity calculator for Texas Hold'em, Short Deck (Triton and classic rules), PLO4 and PLO5. Give it hands, partial hands, random hands or weighted ranges, a board and dead cards, and it answers:README 전문 보기 ↗What are the chances? Poker odds that tell you exactly, or tell you exactly how sure they are.
poker · equity-calculator · texas-holdem · short-deck · omaha · monte-carlo · web-worker · cloudflare-pages
Hookah Pookah is a poker equity calculator for Texas Hold'em, Short Deck (Triton and classic rules), PLO4 and PLO5. Give it hands, partial hands, random hands or weighted ranges, a board and dead cards, and it answers:
It is exact whenever the math allows. Heads-up preflop enumerates all 1,712,304 boards in about 35 ms. Range against range runs exactly in around 100 ms. When a spot is too big (say, five random opponents preflop), it switches to Monte Carlo on every CPU core and keeps sampling until the 95% confidence interval is as tight as you asked for. That interval is always on screen, and the result never shows more digits than it can defend.
Everything runs in your browser. No server, no account, no ads.
| Route | Game |
|---|---|
/holdem | Texas Hold'em |
/short-deck | Short Deck, Triton or classic rules |
/plo | Pot Limit Omaha (4 cards) |
/plo5 | 5 Card Omaha |
Spots live in the URL, so every calculation is shareable:
/holdem?p=AhKh&p=r:QQ+,AKs&b=Qh7h2c
The answer updates as you go: your chance to win, whether you are a favourite or an underdog, what hand you are likely to finish with, and (once there is a flop) which next cards help you. Open Should I call? to compare the price of a call with your chances.
Switch on Advanced for opponent ranges, the 13x13 range grid, dead cards, precision settings and the full hand table. Shared links that use those features open in Advanced automatically.
AhKh vs QQ+, AKs vs random on Ks7h2d dead 2ca h. Backspace clears it.| Notation | Meaning |
|---|---|
AA AKs AKo AK | a hand class (AK is suited and offsuit) |
QQ+ ATs+ KTo+ | pairs upward, or kickers up to one below the top card |
22-55 A2s-A5s K9o-KJo | pair ladders and shared top card ladders |
T9s-54s | constant gap ladders |
AhKh | one exact combo |
15% 10%-25% | top hands by preflop all-in equity (vs 3 random hands by default, vs 1 selectable) |
random any | every combo |
AA:0.5 KK:25% [50]AQs, AJs[/50] | weights |
When a combo appears twice, the later token wins, so QQ+, AA:0.5 means what it says.
Accuracy is the whole product, so it is checked against independent implementations rather than against itself.
| Check | Result |
|---|---|
| All 133,784,560 seven-card hands, category counts | exact match to the published table; 4,824 distinct ranks |
| Short deck seven-card counts, Triton and classic | exact match to an independent C enumerator; 762 and 752 ranks |
| PokerHandEvaluator test corpus: 5, 6, 7 card, PLO4, PLO5 (6.6M hands) | 0 inconsistencies, 0 ordering violations |
| Heads-up and 3-way preflop equities vs OMPEval exhaustive enumeration | identical to 4 decimals |
| 35 random range vs range matchups vs OMPEval | max difference 5e-7 percentage points |
| Randomised spots (ranges, weights, partial hands, dead cards, all variants) vs a naive brute-force oracle | identical to 1e-14 |
| Monte Carlo 95% intervals over thousands of seeded runs | cover the exact answer 94.8% to 95.6% of the time |
A finding worth passing on: short deck equities quoted around the web (AsAh vs KsKh at 75.02%) use classic rules. Under Triton rules, where trips beat a straight, it is 74.96%. Hookah Pookah supports both and says which one it is using.
The unit suite runs these oracles on every push; pnpm test:stress runs the exhaustive and long-running versions (weekly in CI).
src/
engine/ pure TypeScript, no DOM: runs in Node, Vitest and Web Workers
cards.ts card ids (rank * 4 + suit), parsing, formatting
evaluator.ts suit-mask evaluator and rule tables (standard, short deck Triton, classic)
omp.ts OMPEval-style rank-key perfect hash, filled from evaluator.ts
omaha.ts direct two-plus-three Omaha evaluation, no subset loop
scorer.ts showdown scorer used by every hot loop
boardIso.ts exact board enumeration with irrelevant-suit merging
equity.ts planning, exact enumeration, Monte Carlo, range breakdowns, next card
ranges.ts range grammar, percent orderings, formatting
rng.ts xoshiro128** with unbiased integer draws
worker/ worker entry, message protocol, pool with sharded Monte Carlo
state/ spot model, URL codec, quick spot parser, SEO titles
ui/ React components and hand-written CSS
scripts/ orderings, perfect hash offsets, OG image, post-build SEO, stress suite
tests/ Vitest suites and the naive reference oracle
e2e/ Playwright against the production build on the Pages runtime
Evaluation. Cards fold into four 13-bit suit masks. Pairs, trips and quads fall out of XOR and AND across the masks, and straights and flushes come from 8192-entry tables, the idea popularised by pokersource's poker-eval. That evaluator defines the truth. For speed, omp.ts builds an OMPEval style perfect hash (additive rank keys plus a flush table) whose values are copied from the mask evaluator, so both always agree, including under short deck reordering. Omaha uses a case analysis after Open PQL that never loops over the 60 or 100 two-plus-three subsets.
Exact enumeration. Range players are expanded into their conflict-free joint assignments. Random hole cards are enumerated per player, then boards are dealt with irrelevant-suit merging: a suit nobody can flush in collapses same-rank cards into one weighted branch. Joint deals that are suit relabelings of each other are enumerated once and replayed from a cache. Together these make exact mode the common case.
Monte Carlo. Range assignments are sampled either from the enumerated joint list (weighted, O(log n)) or by rejection of whole assignments, never player by player, which would be biased. Hole cards and boards come from a partial Fisher-Yates shuffle. Each worker runs an independent seeded shard in short slices; the pool merges raw sums (weights, equity, squared equity, categories) so the combined standard error is exact, and stops every shard cooperatively once the target is reached.
Planning. Before running, the engine estimates the work: joint deals after suit caching, times runouts, times players. Below the budget it enumerates; above it samples.
Requires Node 22.18+ (TypeScript runs natively) and pnpm.
pnpm install
pnpm dev # http://localhost:5173
pnpm test # unit and oracle suites
pnpm test:e2e # Playwright on the built site (runs wrangler pages dev)
pnpm test:stress # exhaustive counts, PHEvaluator corpus, long fuzz, calibration
pnpm lint && pnpm typecheck
pnpm build # dist/ with route pages, sitemap and headers
Generators (outputs are committed):
node scripts/gen-preflop-ranking.ts # percent orderings: exact vs 1 random, 20M trials vs 3
node scripts/gen-omp-offsets.ts # perfect hash offsets
node scripts/gen-og.ts # social card and icons, with live engine numbers
Zero touch. The site is static and lives on Cloudflare Pages as project hookah-pookah, connected to this repository.
main is green, the deploy job calls the project's Pages deploy hook (secret CLOUDFLARE_DEPLOY_HOOK), waits until hookah-pookah.pages.dev serves the exact bundle CI built, and smoke tests every route.Manual deploys still work with pnpm deploy (wrangler direct upload).
Standing on the shoulders of OMPEval (ISC), PokerHandEvaluator (Apache-2.0), Open PQL (MIT), PokerStove (BSD-3) and pokersource's poker-eval (read, not copied).
MIT © Karthik Subramanian