シード付きサイコロ
シード付きサイコロは、個数、面数、シードが同じであれば、毎回同一の順序で出目を生成します。そのため、同じ結果が必要なテスト、ゲームの再現、授業の課題、共有シナリオに適しています。振るサイコロの個数、各サイコロの面数、空ではないシード文字列を入力してください。応答には個々の出目が順番に表示され、その合計も含まれます。
無料で実行
サイコロの出目を再現可能にします
一般的なサイコロツールは予測できない結果を得るためのものですが、別の利用者や後の実行でも完全に同じ結果が必要な場合には再現性が重要です。このツールはシード文字列を固定の初期値へ変換し、採用される出目ごとに決定論的な生成器を進めます。サイコロの個数、面数、シードをすべて同じにすると、出目の順序と合計も同一になります。いずれか1つを変更すると、別のシナリオになります。シードには、テストケース名、試合の識別子、授業名など、チームで保存して共有できる空ではない文字列を使用できます。シードは秘密情報ではなく、シナリオ定義の一部として扱ってください。応答には合計だけでなく、各出目を確認できる配列が含まれます。ぞろ目、最大値や最小値、個別の成功判定、後日の再現を扱うルールにも利用できます。また、合計も返されるため、一般的な確認で追加の計算は必要ありません。
個数と面数を正しく指定します
サイコロの個数は返される独立した結果の数を決め、面数は各結果が取り得る範囲を両端を含めて決めます。たとえば6面のサイコロは必ず1から6までの整数を返し、20面なら1から20までを返します。この機能では、サイコロを1から1,000個、各サイコロの面数を2から1,000,000まで指定できます。2面未満では意味のある選択にならないためエラーとなり、小数や数値以外の入力も自動的に丸めず拒否します。実装では、32ビット値を棄却サンプリングによって各面へ割り当てます。これにより、生成範囲が面数で割り切れない場合に生じる小さな剰余バイアスを避けられます。定義済みの整数演算だけを使うため、サーバーとブラウザーで同じ結果になります。システムの乱数、時計、地域設定、外部サービスには依存しません。反復可能なテストや実演には適していますが、暗号、金銭を伴う賭け、安全性が重要な抽選には使用しないでください。
完全なシナリオを保存して再現します
確実に再現するには、サイコロの個数、面数、シードの3つを一緒に保存してください。後から個々の出目をルールで参照する場合、合計だけでは不十分です。また、設定が変わる可能性がある場合は、シードだけでも足りません。テストスイートではケース名からシードを作り、この機能を呼び出して、読みやすい証拠として出目を保存できます。ゲームの進行役はセッション前にシナリオのシードを公開し、結果を事前に明かさずに、参加者が同じ場面を再現できるようにできます。教員は自然なサイコロ実験の形式を保ちながら、全員に同じ生成データを配布できます。出目の列は、この機能で文書化されたアルゴリズムに結び付いています。現在はベータ版のため、長期的な再現が必要な場合は返された出目も保存してください。APIによる自動化は1回$0.002で、ブラウザーでは同じ純粋な計算をローカルで実行できます。異なる列でも合計が一致する場合があるため、比較時は合計だけでなく出目の順序も確認してください。
活用例
ゲームのテストを安定させる
名前付きシードを自動テストで使用し、戦闘、移動、得点処理へ再現可能な出目を渡します。
卓上ゲームの場面を再現する
サイコロ設定とシードを共有し、全員が同じ順序の出目と合計を再生成できるようにします。
授業用の課題を準備する
自然に見える結果を保ちながら、確率の演習で全員が使える一貫したデータを用意します。
よくある質問
同じシードなら常に同じ出目になりますか?
はい。サイコロの個数、面数、シード文字列、機能のアルゴリズムが同じであれば一致します。
面数が2未満の場合はどうなりますか?
サイコロには少なくとも2つの面が必要なため、無効な入力としてエラーになります。
合計だけでなく各サイコロも確認できますか?
はい。出目の配列に各結果が順番に入り、合計の項目にはその総和が入ります。
暗号や実際の金銭を賭ける用途に使えますか?
いいえ。意図的に再現できる生成器であり、暗号学的に安全な乱数源ではありません。
APIの1回の利用料金はいくらですか?
APIの各リクエストは$0.002です。同じ純粋な計算をブラウザーでは無料で実行できます。
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/game/dice-roll-seeded \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"dice":3,"sides":6,"seed":"campaign-round-7"}'const res = await fetch("https://api.kit.forhosting.com/game/dice-roll-seeded", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"dice": 3,
"sides": 6,
"seed": "campaign-round-7"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/game/dice-roll-seeded",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"dice": 3,
"sides": 6,
"seed": "campaign-round-7"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/game/dice-roll-seeded", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"dice":3,"sides":6,"seed":"campaign-round-7"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"dice":3,"sides":6,"seed":"campaign-round-7"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/game/dice-roll-seeded", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"dice": 3,
"sides": 6,
"seed": "campaign-round-7"
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "game.dice_roll_seeded",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |