ランダム選択ツールでできること
指定したリストから、1つまたは複数の項目を、どれも同じ確率で選びます。くじ引きの当選者、最初に発表する人、食事に行くお店、順番決め、問題集から出す問題などを決めるのに使えます。リスト全体をランダムな順番にシャッフルすることもできます。
リストがお使いの端末の外に出ることはありません。抽選はブラウザの中で行われ、ページを閉じた後に何かが保存されることもありません。
名前や選択肢は日本語のままで問題ありません。社内の抽選会、席替え、当番決め、グループ分けなど、日本語のリストをそのまま貼り付けて使えます。
使い方
- 「選択肢(1行に1つ)」欄に項目を入力するか貼り付けます。
Red, Green, Blueのように、1行をカンマで区切った形でも使えます。 - 「選ぶ数」を設定します。当選者が1人なら1のままにします。
- 同じ項目を2回選びたくない場合は、「重複なし」をオンのままにします。オフにすると、ボールを引いて袋に戻すような復元抽出になります。
- 「結果の区切り」を選びます。初期設定は改行です。
- 「ランダムに選ぶ」を押します。すべての選択肢をランダムな順番に並べたい場合は、「リストをシャッフル」を押します。
1つだけ選んだ場合は、「結果」の下に大きく表示されます。複数選んだ場合は一覧で表示されます。「コピー」を押すとコピーできます。直近10回分の抽選は、それぞれの時刻とともに「最近の結果」に一覧表示されます。前の抽選結果を見せてほしいと言われたときに役立ちます。「クリア」を押すと一覧が空になります。一覧は、ページを離れるまでの間だけ保持されます。
空の行や各項目の前後にある余分なスペースは無視されるので、表計算ソフトの列からそのまま貼り付けられます。
抽選例
以下は、このページを動かしているコードの実際の出力です。実行するたびに結果は変わります。
| リスト | 設定 | 実行結果の一例 |
|---|---|---|
| Pizza, Sushi, Tacos, Curry, Burgers, Salad | 1つ選ぶ | Sushi |
| 同じリスト | 3つ選ぶ、重複なし | Burgers, Sushi, Curry |
| Ana, Ben, Chloe, Dev | 2つ選ぶ、重複なし | Ben, Chloe |
| Pizza, Sushi, Tacos, Curry, Burgers, Salad | リストをシャッフル | Sushi, Curry, Burgers, Tacos, Pizza, Salad |
| Heads, Tails | 5つ選ぶ、重複なしをオフ | Heads, Tails, Tails, Tails, Tails |
| Yes, No | 1つ選ぶ | Yes |
コイン投げ(Heads は表、Tails は裏)の行は、ランダムな結果がどう見えるかを思い出させてくれます。裏が4回続くと怪しく感じますが、公平な抽選でもこの程度の短い連続はよくあることです。
仕組み
各行がリストの1つのエントリーになります。1つ選ぶために、ツールは0からリストの最後の位置までのランダムな整数を引き、その位置のエントリーを返します。
乱数は、ブラウザに組み込まれた安全な乱数源 crypto.getRandomValues から取得します。生のランダムなビットを、どのエントリーも有利にならないように位置へ変換するため、ツールは棄却サンプリングを使います。単純に余りを計算すると、リストの長さで乱数の範囲がちょうど割り切れない場合に、一部の位置がわずかに選ばれやすくなります。棄却サンプリングはその偏りを生む少数の値を捨てて引き直すので、すべてのエントリーがまったく同じ確率になります。
「重複なし」がオンの場合、ツールはリストのコピーにフィッシャー・イェーツ法のシャッフルをかけ、先頭から項目を取り出します。帽子から名前を戻さずに引くのと同じです。「リストをシャッフル」は、シャッフルしたリスト全体を返します。
活用アイデア
- プレゼント企画。 応募者の名前を貼り付けて当選者を1人選び、さらに補欠を2人選びます。
- 教室で。 次に答える人を選んだり、クラス名簿をシャッフルして発表の順番を決めたりします。
- チーム分け。 リストをシャッフルし、前半と後半に分けます。
- 迷ったときの決定。 決めかねている選択肢を貼り付けて、ツールに選ばせます。結果を見てがっかりしたなら、本当はどちらが良かったのかがわかります。
- 勉強。 テーマや単語カードの問題の一覧を貼り付け、復習するものを3つ選びます。
ヒントと制限
- 重複は2回分として数えられます。 各行が1つのエントリーなので、繰り返し出てくる名前は選ばれやすくなります。それを望まない場合は、先にリストを整理してください。
- 項目の中のカンマ。 項目にカンマが含まれる場合は、別々の行に分けてください。カンマで区切られるのは、リスト全体が1行にあるときだけです。区切りとして扱われるのは半角のカンマ(,)だけで、日本語の読点「、」や全角カンマでは分かれないので、日本語のリストは1行に1つずつ入力してください。
- リストより多く選ぶ場合。 「重複なし」がオンのときに6つの選択肢から10個を指定すると、6つすべてがランダムな順番で返され、6つしか選べなかったことがステータス行に表示されます。
- 記録を残しましょう。 公開の抽選会では、結果をコピーして「最近の結果」の時刻を控えるか、ボタンを押すところを画面録画しておきましょう。
- 1回の操作で最大1,000件まで選べます。
そのほかのランダムな選び方
Excel や Google スプレッドシート。 A2:A20 に名前がある場合、=INDEX(A2:A20, RANDBETWEEN(1, ROWS(A2:A20))) で1人を選べます。最新の Excel では、=SORTBY(A2:A20, RANDARRAY(ROWS(A2:A20))) でリストをシャッフルできます。
Python。 random.choice(names) で1つ、random.sample(names, 3) で重複なしに3つ選べます。random.shuffle(names) はリストそのものをシャッフルします。予測できない必要がある場合は secrets.choice(names) を使ってください。
コマンドライン。 Linux では、shuf -n 1 names.txt でファイルからランダムな1行を表示できます。
関連ツール
項目ではなく数字を選ぶには、乱数生成ツールを使ってください。言葉遊びの頭文字を決めるなど、ランダムなアルファベットが必要なら、ランダムアルファベット生成ツールを試してください。ゲームや予定のために月を選ぶなら、ランダム月生成ツールを使ってください。