シード付きランダムチーム分け・均等なグループを再現
このシード付きランダムチーム分けツールは、名前の一覧を、後から同じ条件で再現できる均等なグループへ振り分けます。参加者を入力し、必要なチーム数を選び、任意の文字列をシードとして指定してください。名前の順序、チーム数、シードが同じなら、割り当て結果も常に同じです。そのため、結果の監査、共有、再実行が容易です。各参加者は1回だけ割り当てられ、チーム間の人数差は最大1名です。チーム数が名前の数を超える場合はエラーになります。
無料で実行
参加者一覧を整え、分かりやすいシードを選びます
参加する方ごとに1件の名前を用意してください。大文字と小文字、空白を含め、入力した表記はそのまま結果に保持されます。そのため、表示名、イニシャル、社員番号付きの名称など、人が読みやすい識別子を利用できます。空白だけの項目は使用できません。同姓同名の方がいる場合を考慮し、同じ文字列の項目も別々の参加者として受け付けます。ただし、最終結果で確実に区別する必要がある場合は、番号などを添えることをお勧めします。チーム数には、1以上かつ名前の件数以下の整数を指定してください。シードには、イベント名、組織で決めた日付、公開する抽選名など、空でない任意の文字列を使用できます。内容が分かるシードなら、追加の状態を保存せずに割り当てを再現しやすくなります。公平な手順が必要な場合は、チームを見る前にシードを合意または公開してください。1文字変えるだけでも並びは変わる可能性があり、入力を完全に同じにすれば同じ結果になります。1回のリクエストで最大10,000件の名前を処理でき、授業、研修、競技会、大規模な社内行事にも対応します。
決定的なシャッフルと均等配分の仕組み
このツールはシードを安定した数値状態へ変換し、その状態に基づいて名前一覧のコピーを決定的にシャッフルします。システムの乱数、現在時刻、ネットワーク上の情報、保存済みのセッション状態は使用しません。シャッフル後は、先頭の名前をチーム1、次をチーム2という順で配り、最後のチームまで進んだら再びチーム1へ戻ります。この方式により、最大のチームと最小のチームの人数差は必ず1名以内になります。名前の総数をチーム数で割り切れない場合は、番号の若いチームから順に1名ずつ多く割り当てられます。入力の各位置は出力にちょうど1回現れるため、同じ表示名が複数あっても、黙って統合されることはありません。ここでいう決定性は再現可能であることを意味し、暗号学的に予測不能であることを意味しません。完全な入力とシードを知る方は、同じ割り当てを計算できます。公開シードを参加者が都合よく操作できる懸念がある場合は、名簿を確定した後、合意した手順でシードを選び、一覧とシードを結果と一緒に記録してください。
割り当ての再実行、比較、自動化
後で割り当てを再現する必要がある場合は、名前の元の順序、指定したチーム数、シードをすべて保存してください。この3つはすべて計算の一部です。名前の並べ替え、表記の修正、遅れて参加する方の追加、参加者の削除、チーム数の変更、シードの編集のいずれでも、新しいシャッフル結果になります。この性質により、名簿を変更した後も古い結果が有効に見えてしまう事態を防げます。一方で、抽選記録として残す際には、結果だけでなく完全なリクエストを保管する必要があります。レスポンスには、シード、チーム数、メンバーを含む番号付きチームが返されるため、予定表への転記や自動ワークフローでの処理が簡単です。単発の授業や研修ではブラウザー実行を利用し、独自の乱数処理を管理せずにアプリケーションから再現可能なグループを作る場合はAPIをご利用ください。APIリクエストの料金は$0.002で、ブラウザー実行はこのページで利用できます。空の名前、シードの未指定、整数でないチーム数、参加者数を超えるチーム数など、不可能または曖昧な入力は処理前に検証されます。
活用例
研修の分科会グループを作成
セッション用シードを公開し、担当者が後から再現できる均等なグループを作ります。
授業のプロジェクトチームを編成
名簿を均等に分け、使用した一覧、シード、正確な割り当てを記録として残します。
定期イベントの抽選を自動化
乱数生成器の状態を保存せず、アプリケーション内で決定的なチーム分けを実行します。
よくある質問
同じシードなら、常に同じチームになりますか?
はい。名前の順序とチーム数も同じであれば、同じ結果になります。いずれかを変更すると結果も変わる可能性があります。
参加者はどの程度均等に配分されますか?
各参加者は1回だけ割り当てられ、最大のチームは最小のチームより最大1名だけ多くなります。
チーム数が名前の数より多い場合はどうなりますか?
各チームに少なくとも1名が必要なため、入力が無効であることを示すエラーが返されます。
同じ名前の方を2名登録できますか?
はい。同じ文字列も別々の項目として扱われます。区別が必要な場合は識別子を追加してください。
高い安全性が必要な抽選にも使えますか?
いいえ。透明性と再現性はありますが、秘密抽選や暗号学的に安全な抽選を目的としたものではありません。
APIリクエストの料金はいくらですか?
APIリクエスト1件につき$0.002です。このページではブラウザーからも実行できます。
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/game/team-shuffle-seeded \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"names":["Amina","Bruno","Chen","Daria","Emil","Fatima","Grace"],"team_count":3,"seed":"summer-games-2026"}'const res = await fetch("https://api.kit.forhosting.com/game/team-shuffle-seeded", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"names": [
"Amina",
"Bruno",
"Chen",
"Daria",
"Emil",
"Fatima",
"Grace"
],
"team_count": 3,
"seed": "summer-games-2026"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/game/team-shuffle-seeded",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"names": [
"Amina",
"Bruno",
"Chen",
"Daria",
"Emil",
"Fatima",
"Grace"
],
"team_count": 3,
"seed": "summer-games-2026"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/game/team-shuffle-seeded", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"names":["Amina","Bruno","Chen","Daria","Emil","Fatima","Grace"],"team_count":3,"seed":"summer-games-2026"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"names":["Amina","Bruno","Chen","Daria","Emil","Fatima","Grace"],"team_count":3,"seed":"summer-games-2026"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/game/team-shuffle-seeded", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"names": [
"Amina",
"Bruno",
"Chen",
"Daria",
"Emil",
"Fatima",
"Grace"
],
"team_count": 3,
"seed": "summer-games-2026"
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "game.team_shuffle_seeded",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
制限
max_items | 10000 |
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |