piapia123
ja

ランダム抽選

テキスト

処理はすべてブラウザ内で完結します。データは送信されません

入力
ファイルをここにドロップすると読み込めます
出力

名簿を 1 行に 1 件ずつ貼り付け、ランダムに数件を抽選します。 乱数源は `Math.random` ではなく `crypto.getRandomValues` です。 抽選では「予測できるか」が実際の問題になります:`Math.random` はエンジンによっては逆算できる擬似乱数列で、十分な結果を観察されると次が分かってしまいます。抽選そのものは公平で、どの候補も当たる確率は同じです。 「重複なし」は既定で有効で、足りないときはエラーにします。 5 件から重複なしで 10 件は取れません。そのときツールは「名簿は 5 件しかない」と伝えます。黙って 5 件返したり、こっそり重複を許したりはしません —— 前者は壊れていると思わせ、後者は「重複なし」という約束を破ります。重複を許す場合(引いたあと戻す方式)はチェックを外してください。 「名簿の順に並べる」は読み上げ用です。 抽選は順序がランダムなのが自然ですが、当選者を名簿に沿って読み上げる場合や元の表と照合する場合は飛び飛びだと読みにくいので、これを有効にすると元の行順に戻します。 テキストシャッフル との違い:あちらは全体を並べ替えて返し、こちらは当たった数件を返します。

機能

  • 名簿から 1〜200 件をランダムに抽選
  • 乱数源は `crypto.getRandomValues` で、予測可能な擬似乱数列ではありません
  • 棄却サンプリングで各候補の確率を均等に。名簿の上のほうが当たりやすくなる偏りがありません
  • 重複なしが既定。足りない場合はエラーにし、名簿の件数を知らせます
  • 重複を許す設定も可能(引いたあと戻す方式)
  • 当選結果を名簿の元の順に並べ替えることもできます
  • 空行と前後の空白は無視するので、貼り付けるだけで使えます
  • 結果は行ごとにコピーでき、抽選番号が付きます

使い方

  1. 名簿を 1 行に 1 件ずつ貼り付けます
  2. 抽選する件数を入力し、必要なら重複許可や名簿順を設定します
  3. 「もう一度抽選」で引き直し、コピーで結果を取り出します

よくある質問

抽選は公平ですか?偏りはありませんか?
公平です。2 つの面で対処しています。乱数源は OS 提供の暗号学的乱数(`crypto.getRandomValues`)で、内部状態は公開されず過去の結果から次を予測できません —— `Math.random` はエンジンによっては予測可能で、抽選には向きません。値の取り出し方は剰余ではなく棄却サンプリングです。剰余だと名簿の先頭付近がわずかに出やすくなります(6 件を 256 個の乱数バイトに割り当てると、先頭 4 件の元が 1 つずつ多くなる)。差は小さいですが実在し、抽選ではまさにそれが問題になります。
「重複なし」で足りないときにエラーになるのはなぜですか?
それが約束だからです。重複なしで 10 件と言われて 5 件返したら、ツールが壊れているか数え間違えたと思うでしょう。10 件返したが中に重複があれば、重複排除が効いていないと思うでしょう。どちらもエラーより悪い結果です。エラーなら「名簿は 5 件」と分かるので、名簿を変えるか重複を許可するかを即座に判断できます。
「テキストシャッフル」との違いは?
シャッフルは全体を並べ替えて返すので、先頭の数件を自分で選ぶ必要があり、「今回当たったのがどれか」も強調されません。このツールは当たった数件を番号付き・行ごとコピー可能な形で返します。名簿全体をランダムな順で欲しいならシャッフル、3 人だけ欲しいならこちらです。

関連ツール