このツールについて
シークレットサンタ ジェネレーターは、全員がちょうど1つの贈り物を贈り、ちょうど1つを受け取り、誰も自分の名前を引かないように、贈り物交換のグループをランダムにペアリングします。1行に1つの名前を貼り付け、必要な除外ペア(例えばカップルが互いに一致しないように)を追加して、割り当てをクリックします。
内部では、循環的な割り当てを使って有効な完全順列を構築します。名前はブラウザの暗号乱数生成器(crypto.getRandomValues)を利用したFisher-Yatesシャッフルでシャッフルされ、シャッフルされた順序で各人が循環の次の人に贈り、最後の人が最初の人に贈ります。単一の循環は自己一致がなく、全員が一度ずつ贈って受け取ることを保証します。除外を尊重するため、ツールはルールを破らない配置が見つかるまで最大数千回まで再シャッフルします。制約を満たせない場合は、悪いリストを返す代わりにその旨を伝えます。
これは主催者向けの単一デバイスツールです。贈り手から受け手への完全なリストを画面に表示するため、非公開で実行してください。すべてはブラウザ内でローカルに行われます。何もアップロードされずオフラインで動作します。除外は1行に2つの名前をカンマ、コロン、ダッシュで区切って入力してください(例:「Alex, Jordan」)。
よくある質問
誰かが自分自身に贈り物を贈るよう割り当てられることはありますか?
決してありません。割り当ては単一の循環的完全順列であり、数学的に誰も自分自身に一致せず、全員が一度贈って一度受け取ることを保証します。
カップルが一致しないようにするにはどうしますか?
両方の名前をカンマ、コロン、ダッシュで区切った除外行を追加します(例:「Alex, Jordan」)。除外は双方向なので、どちらの人も相手を引けません。必要なだけ除外行を追加できます。
除外を満たせない場合はどうなりますか?
ツールは有効な配置を探して最大数千回まで再シャッフルします。すべての除外を尊重できる割り当てがない場合(例えば重なり合うルールが多すぎる場合)、無効なリストを返す代わりに制約が不可能であると報告します。
抽選は非公開で、オフラインで動作しますか?
これはリスト全体を1つの画面に表示する主催者ツールなので、プレイヤーに見えない場所で実行してください。ローカルの暗号乱数生成器を使って完全にブラウザ内で動作します。何もアップロードされずオフラインで動作します。