数字と時計
クラッシュはロケットとの競争のように見えますが、仕組み上はもっとシンプルな2つの要素でできています。ラウンドが始まる前に、エンジンはコミット済みのハッシュから隠された1つの数字、バストポイントを引きます。その後時計が動き出し、倍率が固定の曲線に沿って上昇します。曲線がバストポイントに達するとラウンドは終了し、まだ乗っている全員が賭け金を失います。キャッシュアウト——手動、またはラウンド開始前に設定したオート目標——はその瞬間の倍率を確定し、賭け金×倍率を支払います。飛行自体にランダムな要素は何もなく、そのラウンドで唯一ランダムなのは事前に引かれた数字だけです。
ENGINE-VERIFIEDハウス側サービス(crash/CrashEngine.kt)のCrashDerivation.crashPoint100()は、クライアント側の_shared/rng.tsのbust100()と一致します:hはHMAC-SHA256(チェーンリンク、ソルト)の上位52ビット。e = 2⁵²、n = 100として、バストポイント(百分率単位)はfloor((n·e − h) ÷ (e − h))で、100から1,000,000の範囲にクランプされます。これはbustabitの式を整数で計算したもので、クライアント側の検証ツールとサーバーがビット単位で一致します。1%のエッジはnから来ています:n = 101 − 100 × ハウスエッジ、つまり1%なら100です。
ENGINE-VERIFIED同じファイル内のmultiplier100()とクライアント側crash/api.tsのcrashMultiplier():t秒後のライブ倍率はfloor(100 × e^(0.069314718 t))百分率単位で、100を下回ることはありません。成長定数はln 2 ÷ 10なので、倍率は10秒ごとに2倍になります。msToReach()はこれを逆算してバストのスケジュールを計算します。
ランダム部分をu = h ÷ 2⁵²という分数として表すと、これは0から1の間に均等に分布し、バストの式はfloor((100 − u) ÷ (1 − u))百分率単位になります。u = 0のとき、これはちょうど100、つまり曲線が動く前に×1.00でバストします。uが1に近づくにつれて値は急上昇し、クランプが1,000,000百分率、つまり×10,000で止めます。以下のすべては、この1行の式と、何が勝ちとみなされるかの厳密なルールから導かれます。
厳密に上回る:価格を決めるルール
ENGINE-VERIFIEDcrash/CrashEngine.ktのsettleCrash()とapplyAutoCashouts():オート目標が支払われるのはtarget < bustポイントのとき(「auto < crashPoint100」)のみです。目標がバストポイントと等しい場合はバストします。飛行中、到達可能な倍率はバストポイント − 1でキャップされているため、オート目標はライブ曲線がそこに達した瞬間に発動し、バストポイントを超えることはありません。cashout():ライブ倍率mでの手動キャッシュアウトは、m ≥ バストポイントの場合は拒否されます。配当は賭け金 × 倍率 ÷ 100をコインの最小単位に切り捨てたものです(mult()、RoundingMode.FLOOR)。
これがオッズを左右する詳細です。百分率でTの目標は、バストポイントがTと等しいときには勝ちません。バストポイントが少なくともT + 1のときにのみ勝ちます。この式から、バストポイントが少なくともKである確率は、101以上のKについて99 ÷ (K − 1)なので、少なくともT + 1である確率は99 ÷ Tです。×2の目標の場合、これは99 ÷ 200 = 49.50%です。×2の配当を掛けると、還元率は0.99になります——そしてTはどの目標でも同じように相殺されます。
| 目標倍率 | 勝率 | 1回の勝利の頻度 | 還元率 | ハウスエッジ | 賭け金単位あたりの変動幅 | 到達タイミング |
|---|---|---|---|---|---|---|
| ×1.01 | 98.02% | 1.02ラウンド | 99.00% | 1.00% | 0.14 | 0.14 秒 |
| ×1.10 | 90.00% | 1.11 | 99.00% | 1.00% | 0.33 | 1.4 秒 |
| ×1.20 | 82.50% | 1.21 | 99.00% | 1.00% | 0.46 | 2.6 秒 |
| ×1.50 | 66.00% | 1.52 | 99.00% | 1.00% | 0.71 | 5.8秒 |
| ×1.98 | 50.00% | 2.00 | 99.00% | 1.00% | 0.99 | 9.9秒 |
| ×2.00 | 49.50% | 2.02 | 99.00% | 1.00% | 1.00 | 10.0秒 |
| ×3.00 | 33.00% | 3.03 | 99.00% | 1.00% | 1.41 | 15.8秒 |
| ×5.00 | 19.80% | 5.05 | 99.00% | 1.00% | 1.99 | 23.2秒 |
| ×10 | 9.90% | 10.1 | 99.00% | 1.00% | 2.99 | 33.2秒 |
| ×20 | 4.95% | 20.2 | 99.00% | 1.00% | 4.34 | 43.2 s |
| ×50 | 1.98% | 50.5 | 99.00% | 1.00% | 6.97 | 56.4 s |
| ×100 | 0.99% | 101 | 99.00% | 1.00% | 9.90 | 66.4 s |
| ×1,000 | 0.099% | 1,010 | 99.00% | 1.00% | 31.4 | 99.7秒 |
| ×9,999.99 | 0.0099% | 10,101 | 99.00% | 1.00% | 99.5 | 132.9秒 |
勝率 = 99 ÷ T(Tはターゲットの百分率表記)で、厳格ルールの下では正確な値になる。リターン = ターゲット × 勝率 = どの行でも0.99。振れ幅は、ステークに対する1ラウンドの結果の標準偏差で、√(0.99 × ターゲット − 0.9801)。「到達時間」は倍増カーブ上で10 × log₂(ターゲット)秒。ベットフォームが受け付ける最低ターゲットは×1.01で、×10,000.00はバストキャップそのものであり、そこでのターゲットは厳密にバストを下回ることができないため、×9,999.99が表の最上位となる。
中央の2列は変化しない。このルールの下でのクラッシュは、ランボと全く同じ価格設定になる:ステークの1%が、どのターゲットを選んでも、×1.37で手動キャッシュアウトしようと、×500でオートターゲットを設定しようと変わらない。ターゲットが変えるのは結果の形だ──×1.10での小さな勝ちの連続か、×1,000での大当たりで途切れる干ばつか──そして最後の2列がそれを測る。×2ではラウンドの振れ幅は約1ステーク分、×1,000では31ステーク分になる。×1,000までの到達には100秒かかり、それはまた別の種類のコストだ。
一つの行は特別に見る価値がある。×1.98はちょうど半分の確率で勝ち、これが中央値のバストポイントになる:全ラウンドの半分は×1.98より上でバストし、半分は×1.98以下でバストする。きりの良い数字×2.00はコインフリップに半ポイントのハンディキャップがついたもので49.50%、そしてその半ポイントこそが、そのターゲットにおける1%が宿る場所だ。
表示されるか、支払われるか:百分の一のギャップ
似ているようで違う2つの問いがある。カーブが×2.00を表示する頻度は?そして、×2.00ターゲットが支払われる頻度は?前者はバストポイントが少なくとも200(百分率表記)である確率、99 ÷ 199 = 49.75%。後者は少なくとも201である確率、99 ÷ 200 = 49.50%。その差、402ラウンドに1回は、ちょうど×2.00でバストするラウンドだ:画面はその数字に到達するが、チケットは負ける。
| 倍率 | カーブが到達する | ターゲットが支払われる | ちょうどそこでバーストする |
|---|---|---|---|
| ×1.01 | 99.00% | 98.02% | 0.98%、102回に1回 |
| ×1.10 | 90.83% | 90.00% | 0.83%、121回に1回 |
| ×1.50 | 66.44% | 66.00% | 0.44%、226回に1回 |
| ×2.00 | 49.75% | 49.50% | 0.25%、402回に1回 |
| ×3.00 | 33.11% | 33.00% | 0.11%、906分の1 |
| ×5.00 | 19.84% | 19.80% | 0.040%、2,520分の1 |
| ×10 | 9.910% | 9.900% | 0.0099%、10,091分の1 |
| ×100 | 0.9901% | 0.9900% | 1,010,000分の1 |
到達率 = 99 ÷ (T − 1)、配当率 = 99 ÷ T。その差は 99 ÷ (T (T − 1)) であり、これはちょうど100分の1の確率質量がTに集中していることを意味する。この差は低い倍率では無視できないが、高い倍率ではほぼ消える。
この差こそが、エンジンがバースト地点を後から丸められた小数ではなく、100分の1単位の整数として引く理由である。整数による抽選のもとでは、厳密なルールがどのターゲットにおいても分布の100分の1をハウス側に渡すことになり、その100分の1こそがリターンを99%よりわずかに高い値ではなく、ちょうど0.99にする要因となっている。以前のリンボとクラッシュの比較では、「到達する」列、すなわち99x ÷ (100x − 1) からクラッシュの価格を算出し、短いラウンドは99%よりわずかに安いと結論づけていた。それは誤った列だった。エンジンの厳密な精算のもとでは、どのターゲットでも価格は99.00%であり、その記事には現在訂正が加えられている。
誰も狙っていないときにバーストが着地する場所
誰が何に賭けているかに関わらず、ラウンド自体を同じ数式が説明する。バースト地点が少なくともK(100分の1単位)である確率は 99 ÷ (K − 1) であり、これが履歴バーに表示される分布全体を与える。
| 範囲 | ラウンドの割合 | 目安 | ラウンドの継続時間 |
|---|---|---|---|
| ×1.00(即バスト) | 1.00% | 100回に1回 | 0秒 |
| ×1.01〜×1.99 | 49.25% | 2.0回に1回 | 0.1〜9.9秒 |
| ×2.00〜×9.99 | 39.84% | 2.5回に1回 | 10〜33秒 |
| ×10〜×99.99 | 8.92% | 11.2回に1回 | 33〜66秒 |
| ×100〜×999.99 | 0.891% | 112回に1回 | 66〜100秒 |
| ×1,000〜×9,999.99 | 0.0891% | 1,122回に1回 | 100〜133秒 |
| ×10,000.00(上限) | 0.0099% | 10,101回に1回 | 133秒 |
各行は、99 ÷ (下限 − 1) から 99 ÷ 上限を引いた値(百分率単位)です。最初の行は、(100 − u) ÷ (1 − u) が101未満になる確率、すなわちu < 1 ÷ 100の確率です。最後の行は、クランプが1,000,000(百分率単位)に固定されるすべての抽選を表します。各行の合計は100%になります。持続時間は10 × log₂(倍率)秒です。
2つの行だけで、クラッシュセッションの体感のほとんどが説明できます。100回に1回はカーブが1ハンドレッドも動く前に×1.00でバストし、×1.01すら払い出されません。そして約10回に1回は×10に到達し、これは1時間に何度か見かけるほどの頻度であり、高い目標が手の届くものに感じられるほどです。実際に到達可能ではあります——テーブルはその頻度を示しており、「よく覚えている」頻度と実際の頻度はまったく別の数字です。中央値は×1.98でバストし、約10秒弱です。平均ラウンドは14.3秒続きますが、これはまれに起こる長いフライトが平均値を押し上げているためです。
あなたが見送ったラウンドも同じ分布から引かれており、そのそれぞれが新しいチェーンリンクの新しいHMACです。履歴バーに×500があっても、次の×500が以前とまったく同じ確率、0.198%であることに変わりはありません。これはまさにギャンブラーの誤謬の典型例です——ここでの独立性は統計的な仮定ではなく、ハッシュの性質そのものです。
大きな倍率を狙うことの代償
エッジはどこでも同じであるため、目標の選択とは分散についての選択であり、分散には明確に言える代償があります:何ラウンド待つことが期待されるか、そして長い待ち時間がどれほど起こりやすいかです。各ラウンドの勝率をpとすると、N回のラウンドで少なくとも1回勝つ確率は1 − (1 − p)ᴺです。
| ターゲット | ラウンド | 少なくとも1勝 | 勝利なし | テーブルでの時間 |
|---|---|---|---|---|
| ×2 | 10 | 99.89% | 0.11% | 約4分 |
| ×10 | 20 | 87.57% | 12.43% | 約8分 |
| ×10 | 50 | 99.46% | 0.54% | 約20分 |
| ×100 | 100 | 63.03% | 36.97% | 約41分 |
| ×100 | 300 | 94.95% | 5.05% | 約2時間 |
| ×1,000 | 1,000 | 62.86% | 37.14% | 約7時間 |
| ×1,000 | 3,000 | 94.88% | 5.12% | 約20時間 |
1 − (1 − 99 ÷ T)ᴺ、勝率が同じなのでlimboと同一。時間は平均フライト14.3秒に10秒のベッティングウィンドウを加えた、1ラウンドあたり24.3秒を想定。×1,000でのセッションはフライトよりも待ち時間に支配される。
賭け金を置くと、算術は冷ややかなものになります。×100で100回の1ユニット賭けをすると、賭けるのに100ユニットかかり、平均で99ユニット戻ってきます——またしても1%です——しかしその平均は、約100戻ってくる63%の確率と、何も戻ってこない37%の確率で構成されています。ターゲットが何であれ、ユニットあたりに支払う1%は変わりません。変わるのは結果がプレイヤー間でどう分布するかであり、クラッシュではさらに、カーブを見つめている時間の長さも変わります。
同じ罠の低ターゲット版がマーチンゲールです:×2でキャッシュアウトし、負けるたびに倍賭けし、勝てば1ユニット得ます。×2での勝率は49.50%で、10連敗が起きる確率は0.11%、11回目の賭けは1,024ユニットになります。The martingale, pricedがルーレットホイールでこれを解き明かしていますが、クラッシュの数字もそれと0.1ポイント以内の差です。Risk of ruinは、固定賭け金の計画が1%のエッジに対してどれだけ持つかの一般的な公式を示しています。
手動でのキャッシュアウト
手動キャッシュアウトは、サーバーが受け取った時点でライブ倍率が示している百分の一の値で支払われます。ただし、その百分の一がバースト地点を厳密に下回っている場合に限ります。カーブは均等には刻みません:floor(100 × e^(0.0693 t))は、×1.01付近では143ミリ秒ごとに、×2付近では72ミリ秒ごとに、×10付近では14ミリ秒ごとに、×100付近では1.4ミリ秒ごとに、百分の一ずつ進みます。×10でボタンに手を置いている場合、数ユニットの百分の一の範囲内で数値を選んでいることになり、×100では数ユニットの十分の一の範囲内になり、最終的に着地する百分の一は意図と同じくらいネットワークの遅延によって決まります。それによって価格が変わることはありません——各百分の一は期待値でちょうど99%支払われます——しかし、×10を超える手動ターゲットは、入力した数値で正確に発動する自動ターゲットよりも緩い道具であることを意味します。
ENGINE-VERIFIEDcrashGame.tsx:クライアントは、floor(ライブ倍率 × 100)がそれに達した瞬間に自動ターゲットがキャッシュされたと表示し、サーバーのapplyAutoCashouts()と一致します。これはチケットをちょうどターゲットでロックし、それに対する後からの手動キャッシュアウトを拒否します。bet():101百分の一(×1.01)未満の自動ターゲットは拒否されます。
決済からの実用的な詳細の一つ:配当は賭け金×倍率÷100をコインの最小単位まで切り捨てたものなので、0.37の賭け金が×1.23の場合、0.4551ではなく0.45が支払われます。きりの良い賭け金で小数点2桁の倍率の場合、積は正確で何も失われません。小さな半端な賭け金の場合はユニットの端数が失われます。
遊すべてのラウンドが検証可能なクラッシュ
自動ターゲットを×1.01から設定——支払われる確率は99 ÷ ターゲット(百分率)で、バーストはラウンド開始前にコミットされていますクラッシュ →
自分でラウンドを確認する
- ラウンドの前に、パネルはチェーンのコミットハッシュとソルトを表示します。ラウンド後、そのラウンドのチェーンリンクを公開します。そのリンクをハッシュ化すると前のラウンドのリンクと一致するはずで、これがチェーンが順序を事前に固定していたことを証明する方法です。
- 公開されたリンクをキーとして、ソルトをメッセージとしてHMAC-SHA256を計算します。ダイジェストの最初の52ビット——最初の13個の16進文字——をhとします。
- 整数演算でfloor((100 × 2⁵² − h) ÷ (2⁵² − h))を計算し、100〜1,000,000の範囲にクランプします。それがバースト地点を百分率で表したもので、ラウンドがクラッシュした数値と一致するはずです。
HMAC-SHA256のツールと多倍長整数計算機があれば十分です。オープンソースの検証ツールの共有HMACヘルパーも同じ原理です。整数除算は省略できません:浮動小数点版はフロア境界でサーバーと一致しなくなります。そしてこれは厳密なルールの対象となる百分の一そのものです。One rounding, not manyは、検証ツールがサーバーの計算を近似するのではなく再現する理由を説明しています。
よくある質問
クラッシュで×2での勝率はどのくらいですか?
このエンジンでは49.50%です。ターゲットは、ラウンドがそれを厳密に超えてバーストした場合にのみ支払われ、バースト地点が少なくとも201百分の一である確率は99 ÷ 200です。カーブは×2.00にわずかに頻繁に到達します、49.75%です。その差は、ちょうど×2.00でバーストする402回に1回のラウンドです。
クラッシュのハウスエッジはどのくらいですか?
手動・自動を問わず、すべてのキャッシュアウトターゲットで1.00%です。勝率は99 ÷ ターゲット(百分率)で、配当はターゲットなので、すべての賭けは平均で賭け金の99.00%を返します——このエンジンではリンボと同じ価格です。
クラッシュが1.00でバーストする頻度はどのくらいですか?
ラウンドのちょうど1%、100回に1回です。バースト地点はfloor((100 − u) ÷ (1 − u))百分の一で、uが1 ÷ 100未満のときは常に100になります。×1.01でさえ、そのラウンドではどのターゲットも支払われません。
クラッシュに最適なキャッシュアウト倍率は何ですか?
期待値としては差がありません:すべてのターゲットは賭け金単位ごとに1%のコストがかかります。低いターゲットは少額を頻繁に支払い、振れ幅はほぼ1ベット分に収まります。高いターゲットはめったに支払われず、数十ベット分も振れます。×1.98がちょうど50/50の分岐点であり、中央値のバスト地点です。
クラッシュラウンドはどれくらい続きますか?
倍率は10秒ごとに倍増するので、×2は10.0秒、×10は33.2秒、×100は66.4秒、上限の×10,000は132.9秒で到達します。中央値のラウンドは10秒弱でバーストします。平均ラウンド時間は14.3秒です。
×10,000のオートターゲットが支払われることはありますか?
いいえ。×10,000.00はバースト上限であり、ターゲットが支払われるにはバーストより厳密に低くなければならないため、支払われ得る最高のターゲットは×9,999.99で、10,101ラウンドに1回です。
短時間のプレイではクラッシュはリンボより割安ですか?
このエンジンではそうではありません。以前の記事ではカーブが倍率に到達する確率からクラッシュの価格を算出し、×1.01で99.99%としていましたが、厳密な決済ルールのもとでは有効な確率は1パーセントポイント低くなり、リターンはリンボと同様にすべてのターゲットでちょうど99.00%になります。
出典・参考資料
- Betkyoエンジンのソース、ハウスサービス:crash/CrashEngine.kt内のCrashDerivation.crashPoint100(), multiplier100(), msToReach(), applyAutoCashouts(), settleCrash(), mult(), cashout()(bustabit整数バーストポイント、厳密な「ターゲット<バーストポイント」の決済、単位切り捨て払い出し、×1.01最低オートターゲット)
- Betkyoエンジンのソース、クライアント:_shared/rng.ts内のbust100()とh52()(同じ整数計算式、BigInt使用);crash/api.ts内のCRASH_GROWTH_RとcrashMultiplier();crash/crashGame.tsx内のオートキャッシュアウト表示ルール
- 本記事のために計算された正確な数値:整数計算式によるK≧101におけるP(bust ≥ K) = 99 ÷ (K − 1)、厳密ルールでの勝率99 ÷ T、到達と支払いの差99 ÷ (T (T − 1))、範囲別のバースト分布、飛行時間10 × log₂(x)、999,900通りすべてのバースト値から合計した平均飛行時間14.3秒、および少なくとも1回勝つ確率
この記事で紹介されているゲーム