使い方
「リスト(1行に1つ)」の欄に、名前や項目を1行に1つずつ入れます。空の行と行の前後の空白は数えません。欄の下には「4件」のように、いま読み取れている件数が出ます。続いて「動作」で次の3つから1つを選びます。
当選者を選ぶ
「選ぶ人数」を入れて「選ぶ」を押します。1人だけ選ぶと名前が大きく表示され、複数選ぶと選ばれた順に番号の付いた一覧になります。
- 「重複を許可(同じ項目が何度も選ばれることがあります)」がオフ(最初の状態)なら、1回の抽選で同じ行が2度出ることはありません。オンにすると、1人選ぶたびにリスト全体から選び直します。
- 「選ばれた項目をリストから外す」をオンにすると、選ばれた行がリストの欄からその場で消えます。まず1等を選び、残った人の中から2等を選ぶ、というように何回かに分けて抽選するときに使います。
順番を混ぜる
「混ぜる」を押すと、リスト全体がランダムな順番に並べ直されます。リストの欄の並びは変わらず、混ぜた順番は結果にだけ出ます。
チーム分け
「チーム数」を入れて「分ける」を押すと、「1チーム目」「2チーム目」のようにチームごとのメンバーが出ます。人数が割り切れないときは番号の若いチームから1人ずつ多く受け取るので、チーム間の人数差は多くても1人です。7人を3チームに分けると3人・2人・2人、10人を4チームに分けると3人・3人・2人・2人になります。
どの動作でも、「結果」から「すべてコピー」か「.txtでダウンロード」(result.txt)で書き出せます。
リストはこのブラウザに保存され、抽選済みの行を削除すると元に戻せません。共用端末では使用後にリストを消してください。
抽選の単位は名前ではなく「行」です
このツールは、リストの1行を応募1口として扱います。中身が同じ行がいくつあっても1つにまとめません。たとえばリストが次のとおりなら
太郎
太郎
太郎
花子
次郎
1人を選ぶとき、太郎が選ばれる確率は5分の3、つまり60%で、花子と次郎はそれぞれ20%です。応募口数が人によって違う抽選は、このように名前を口数の分だけ書けば済みます。逆に、全員を同じ確率にしたいのに名簿をあちこちから貼り付けた場合は、同じ名前が重なって入っていないかを先に確かめてください。
選び方は動作ごとに少しずつ違います。
- 「当選者を選ぶ」で「重複を許可」をオフにしていると、残っている行から1つ選び、その行を候補から外す、という手順を人数分くり返します。先に選ばれた人ほど番号が若くなります。
- 「順番を混ぜる」は Fisher–Yates シャッフルを使います。いちばん後ろの位置から順に、まだ決まっていない項目の中から1つ選んで埋めていく方法で、ありうる並び順のどれもが同じ確率で出ます。
- 「チーム分け」は、まず全体を同じ方法で混ぜ、混ぜた順に1チーム目、2チーム目、3チーム目、また1チーム目、と1人ずつ入れていきます。
乱数はブラウザの crypto.getRandomValues から受け取り、Math.random() は使いません。受け取った数を件数で割った余りをそのまま使うと、リストの前のほうの行がごくわずかに有利になります。そうした偏りを生む数は捨てて、受け取り直しています。
場面ごとの設定
| やりたいこと | 動作 | 設定 |
|---|---|---|
| 景品の1〜3等を一度に決める | 当選者を選ぶ | 「選ぶ人数」を3、「重複を許可」はオフ。結果の1番が1等 |
| 発表のたびに1人ずつ、一度当たった人は外す | 当選者を選ぶ | 「選ぶ人数」を1、「選ばれた項目をリストから外す」をオン |
| 毎回全員の中から選び直す当番 | 当選者を選ぶ | 「選ぶ人数」を1、2つのオプションはどちらもオフ |
| 発表や発言の順番をまとめて決める | 順番を混ぜる | 設定なし |
| 班分け、試合のチーム分け | チーム分け | 「チーム数」に作りたいチームの数 |
