VALO

HOW IT WORKS

抽選ボタンを押してから 5 枚のカードが決まるまでに、内部で何が起きているかを順に説明します。設定のどの項目がどこで効くのかも合わせて書いてあります。

全体の流れ

  1. 誰がどのロールを持つかを決める
  2. ロールごとに、出しうるエージェントの一覧を作る
  3. エージェント 1 体ずつのウェイトを、抽選率と履歴から計算する
  4. ロールの偏りぶんだけ、そのウェイトを下げる
  5. 重みつきで引く。引けない並びだったら、割り当てからやり直す

1 と 2 は候補を絞る段で、3 と 4 が確率をいじる段です。「ただのランダムではない」と言っているのは主に 3 と 4 を指しています。

STEP 1

誰がどのロールを持つかを決める

ロール構成で決めた 5 つの枠を、5 人へ配ります。配り方はランダムですが、等確率ではありません。ありうる配り方をすべて数え上げ、それぞれに重みを付けたうえで 1 つ選んでいます。

重みは、そのプレイヤーがそのロールをどれだけ引きにくくなっているかの積です。内訳は STEP 4 の 2 種類の補正と同じものを使います。ロール NG を付けた人は、そのロールを含む配り方が候補から丸ごと外れます。

反対にロール UP を付けた人は、そのロールが割り当てに入る重みが 2 倍になります。候補から外すわけではないので、必ず当たるわけではありません。

配り方の総数が 5,000 通りを超えると数え上げをあきらめ、重みなしのシャッフルに落とします。5 人固定なら重複ロールを考えても最大 120 通りなので、今の仕様では起きません。人数を可変にしたときの保険です。

抽選後に開ける「なぜこの結果になったのか」のロール確率の表は、ここで計算した確率をそのまま出しています。

STEP 2

出しうるエージェントの一覧を作る

ロールごとに、そのロールのエージェントのうち「有効」で、かつ抽選率が 0 より大きいものを集めます。抽選率を 0 にするのと無効にするのは、どちらもここで候補から外れるという意味では同じです。

フレックス対象に指定したエージェントは、通常ロールの一覧から抜けます。そのぶんフレックス枠の一覧には全ロールのエージェントが入るので、フレックス枠は「通常枠で選ばれなかった体も含めて、何が来るか分からない枠」になります。

プレイヤーごとの NG は、その人の枠にだけ効きます。同じエージェントが他の人には当たります。また、同じ試合で同じエージェントが 2 人に当たることはありません。UP も同じく、その人の枠にだけ効きます。

STEP 3

エージェントのウェイトを計算する

出発点は、設定に入っている基準抽選率そのものです。ここから、履歴を見て「出過ぎている体」だけを下げます。まず、そのエージェントが何回出ているはずかを求めます。

期待回数 = そのロールの過去抽選総数 × 基準ウェイト ÷ 候補全体のウェイト合計

実際に出た回数がこの期待回数を超えていたら、超えている比を 1.5 乗してからウェイトを割ります。乗じない場合より、出過ぎているぶんの下がり方が急になります。

補正後のウェイト = 基準ウェイト ÷ (実際の回数 ÷ 期待回数) ^ 1.5

下がるのは超えているときだけで、期待回数以下なら基準のまま据え置きです。出ていない体を持ち上げると、今度はそちらが不自然に続くためです。どれだけ出過ぎていても、下限は基準の 15% で止まります。「二度と出ない」状態を作らないためです。

この計算はロールごとに独立しています。ソーヴァがイニシエーター枠で出過ぎていても、フレックス枠でのソーヴァの出やすさは別に数えます。

ここまでの計算のあと、そのプレイヤーが UP に指定したエージェントだけ、ウェイトをさらに 2 倍します。UP したエージェントが実際に出過ぎるようになれば、上の出過ぎ補正がそのぶん効いて下がっていくので、基準抽選率そのものを書き換えるわけではありません。

STEP 4

ロールの偏りを補正する

同じ人が同じロールばかり持つのを避けるための補正です。性質の違う 2 つを重ねています。

連続を避ける

いま何連続で同じロールを引いているかだけを見て、連続するたびに重みを掛け算で下げます。

重み = 減衰率 ^ 連続回数

違うロールを 1 回でも挟めば連続は途切れ、重みは元に戻ります。連続がいくら伸びても、下限の 2% は残します。

積み重なった偏りを均す

連続だけを見ていると、デュエリスト → 別 → デュエリスト → 別 のように1 回挟まるたびに補正が消えてしまいます。そこで連続かどうかに関係なく、直近 20 回ぶんの実績が期待より多いプレイヤーの重みを下げます。

係数 = ((期待回数 + 2) ÷ (実際の回数 + 2)) ^ 効き具合

両方に 2 を足しているのは、回数が少ないうちに極端な値を出さないためです。1 回参加して 1 回デュエリストだった人がいきなり大きく下がることはなく、回数が貯まるほど素の比に近づきます。

この補正は、そのプレイヤーが 5 回参加するまでは効きません。数回では偏りと呼べる形が出ないためで、その間の連続は上の連続回避が見ています。下限は基準の 20% です。

ロール NG を付けている人は、引ける枠だけで期待回数を按分します。分母を全枠のままにすると、禁止したせいで残りのロールまで引きにくくなるためです。

強さ設定と実際の数値

設定の「同じロールに偏らないようにする」で、2 つの補正の効き具合が同時に変わります。

設定連続の減衰率偏り補正の効き具合
OFF補正なし補正なし
弱× 0.650.5
中× 0.51
強× 0.351.5

減衰率は小さいほど、1 連続あたりの下がり方が急になります。効き具合は指数なので、大きいほど偏りに強く反応します。OFF にすると両方とも掛からず、ロールの割り当ては完全にランダムになります。

STEP 5

引く。詰んだらやり直す

ここまでで出したウェイトに比例する確率で、枠ごとに 1 体ずつ引きます。引いた体はその試合の候補から外れるので、後の枠ほど選択肢が狭まります。

NG が多いと、途中で候補が尽きて引けなくなることがあります。そのときは STEP 1 のロール割り当てからやり直します。「この人はデュエリストなら引けるがセンチネルだと詰む」という状況があるためで、割り当てを引き直すだけで通ることが多いです。ここは最大 300 回試します。

それでも見つからないときは、運任せをやめて総当たりに切り替えます。成立する並びをすべて集めたうえで、その中からランダムに 1 つ選びます。最初に見つかったものを採ると、その設定では毎回まったく同じ結果になってしまうためです。ここまでやって並びが 1 つも無ければ、はじめて失敗として理由を表示します。

乱数について

乱数はブラウザ標準のものを使っています。暗号用途の強度はありませんが、遊びの抽選には十分です。並べ替えが必要な場面では、偏りの出ない方式を使っています。

抽選ボタンを押したあとの演出は、結果とは無関係にブラウザ側で回しているだけです。結果は押した時点で決まっていて、演出は最後にそこへ着地します。演出中に見えている仮の絵柄は記録されません。

自分の抽選で数字を確かめる

抽選したあとに出る「なぜこの結果になったのか」を開くと、その回に使われた実際の数字が見られます。誰がどのロールになる確率だったか、枠ごとに各エージェントが何 % だったか、期待回数をどれだけ超えていたかまで並びます。このページの説明と突き合わせると、どの補正がどこで効いたのかが追えます。

累計の出現回数と期待回数のずれは統計にまとまっています。マップごとに抽選率をどう変えているかはマップ別ガイドに、値そのものは設定にあります。