あみだくじ
参加者と当たり・役割を1行ずつ入れるだけで、あみだくじをその場で作成します。名前をクリックすると線をたどるアニメーションでその人の結果だけをオープン。全員一括表示や横線の引き直しもワンクリック。すべてブラウザ内で完結します。
参加者より少ないときは「—」で埋め、多いときは先頭から人数ぶんだけ使います。
使い方
左のテキストエリアに参加者の名前を1行に1人ずつ(2〜12人)、右に結果(当たり・役割・順番など)を1行に1つずつ入れて「あみだくじを作る」を押します。縦線と横線がランダムに描かれ、下端の結果は「?」で伏せられた状態から始まります(対応表も同じ伏せ字で表示)。上端の名前をクリックすると、その人の線がハイライトされてたどり着いた結果だけがオープンします。「全員の結果を表示」で伏せた結果を一括オープン、「作り直す」で横線だけを引き直せます。
横線は「同じ高さに隣どうしの横線を引かない」という標準ルールで配置するため、経路が交差して曖昧になることはなく、結果は必ず全員バラバラ(1対1)になります。
具体例
- 掃除当番 → 参加者に4人の名前、結果に「皿洗い/ゴミ出し/掃除機/買い出し」を入れて役割分担
- 景品くじ → 参加者6人に対して結果を「🎯あたり」1行だけにすると、残りは自動で「—」(はずれ)に
- 順番決め → 結果に「1番/2番/3番…」を入れて発表順やプレー順をその場で決定
あみだくじが必ず1対1になる理由
あみだくじは、縦線どうしを結ぶ横棒をどれだけ足しても出発点と到着点が必ず1対1で対応します。横棒1本は「隣り合う2人の行き先を入れ替える」操作にあたり、入れ替えを何回繰り返しても、同じ場所に2人が到着したり誰も来ない列ができたりすることはないためです。数学的には置換の合成にあたります。
ただし、ここで保証されるのは「重複や欠けが出ない」ことだけです。誰がどこに着くかの確率まで均等になるわけではありません。この違いは実際に効いてきます。
横棒をランダムに置くと結果は偏る
素直な作り方は「各段でサイコロを振って横棒を置く」ですが、これだと出発点の近くに着きやすくなります。横棒は隣り合う縦線しか結べないので、本数が限られていると遠い列まで届かないためです。このツールも以前はその方式で、2万回試すと次のような偏りが出ていました。
| 参加者 | 最も着きやすい列 | 最も着きにくい列 | 比 |
|---|---|---|---|
| 4人 | 29.9% | 19.9% | 1.5倍 |
| 8人 | 24.0% | 1.9% | 12.7倍 |
| 12人 | 20.7% | 0.3% | 68.6倍 |
12人では、左端から出発した人が左寄りの列に着く確率が右端に着く確率の約69倍でした。人数が増えるほど差は開き、参加者を並べる順番そのものが結果に効いてしまいます。
いまの作り方:先に並びを決めてから横棒を引く
そこで現在は順序を逆にしています。まず「誰がどこに着くか」の並びを乱数で1つ選び、その並びになるように横棒を配置します。並びの選び方は Fisher–Yates シャッフルで、乱数には crypto.getRandomValues() を使い、剰余のかたよりも棄却法で取り除いています。ありうる並び方すべてが同じ確率で選ばれるので、出発点がどこであっても不利にはなりません。
横棒は、選んだ並びに達するまで隣り合う2人を入れ替えていくことで決まります(入れ替え1回が横棒1本)。結果として段数は必要なぶんだけになり、以前の「参加者数×2」固定より短くなります。見た目はふつうのあみだくじのままで、たどれば必ず選ばれた並びに行き着きます。
全員が自分の列に着く並び(誰も動かない結果)も、ほかと同じ確率で出ます。そのときは横棒が1本も要らず縦線だけの図になってしまうので、同じ区間を2回入れ替える往復を1組だけ描いて図を成立させています。2回で元に戻るため結果は変わりません。この並びを引き直す実装にすると、2人のときに必ず入れ替わることになり「自分の列に残る確率が0%」という偏りが生まれるため、抽選そのものには手を入れていません。
なお、同じ高さで横棒が交差する配置は作りません。交差があるとたどる順序で結果が変わり、1対1の対応そのものが崩れるためです。
くじの引き方として
あみだくじは、選ぶ楽しさと結果を後から確かめられる透明性が持ち味です。線をたどれば誰でも検証できるので、その場で納得を得やすい方法といえます。単に無作為な割り当てが欲しいだけなら、ランダム選択のシャッフルのほうが手数は少なく済みます(こちらは Math.random() を使うため暗号用途には向きませんが、くじや席替えでは実用上問題のない偏りに収まります)。
結果を見せる順番
先に景品や役割を伏せた状態で全員に列を選んでもらい、そのあとで線をたどるのが本来の使い方です。このツールは1人ずつ経路をたどるアニメーションと、全員ぶんを一度に開く表示を分けてあるので、その場の進め方に合わせて選べます。段数は選ばれた並びに必要なぶんだけ自動で決まります。横棒の本数は選ばれた並びによって決まるだけで、本数の多い少ないが結果の出やすさを変えることはありません。