単語の内部の文字を決定的にシャッフル
「generation」をシード「kit-2026」で並べ替えると、いつも「gateeonrin」になります。先頭と末尾の文字は動かず、内側の8文字だけが入れ替わります。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
計算例
- 単語
- generation
- シード値
- kit-2026
- 並べ替えた結果
- gateeonrin
- 文字
- 10
文字が入れ替わっても読めるという、よく知られた効果を再現できます。シャッフルは乱数ではなく決定論的なシード付きアルゴリズムで駆動されるため、同じ単語と同じシードからは、当社のサーバーでもブラウザでも他のどの環境でも、常にまったく同じ結果が得られます。4文字未満の単語は内部にシャッフルできる文字がないため、明確なエラーで拒否されます。
内部をシャッフルしても単語が読める理由
言語学でよく知られた観察があります。単語の先頭と末尾の文字がそのままなら、中間の文字が入れ替わっていても、読み手はその単語を理解できることが多いのです。単語認識が全体の形と両端の文字に大きく依存しているためです。
generation」のような単語とシードを送信すると、先頭と末尾の間の文字だけがシャッフルされた同じ単語が返されます。この結果は、ワードゲームやパズル、読解・知覚に関する教材、表示テキストの軽い難読化、もっともらしく見えるが元とは明確に異なるテキストが必要なテストフィクスチャに役立ちます。
なお、可読性を保証しようとするものではなく、単純にシャッフルを実行するだけですが、背景にある現象のおかげで、出力は通常、人間の読者にとって判読可能なままです。
設計上の決定論:シードが契約です
多くのスクランブラは乱数生成器を呼び出し、毎回異なる答えを返します。おもちゃとしては構いませんが、出力を検証するテスト、二人のプレイヤーが同じ結果を見る必要があるゲーム、後で再生成しなければならないデータセットなど、再現性が必要になった瞬間に使い物になりません。
シード文字列は FNV-1a でハッシュされ、そのハッシュが xorshift32 擬似乱数生成器を駆動し、その生成器が内部の文字だけを対象に Fisher-Yates シャッフルを実行します。シードを変えれば同じ単語の別の並べ替えが得られ、単語を変えれば同じシードでも新しい結果に対応します。
入力ルール、エラー、適した用途
単語は4文字以上である必要があります。出力には、元の単語、使用されたシード、シャッフル結果、文字数、実際に単語が変化したかどうかが含まれます。短い単語では可能な並べ替えが内部を変えない場合があるため、このフラグは false になることがあります。
典型的な用途は、パズルやゲームのバックエンド、教育ツール、デモデータ生成、スナップショットテストです。当社のグローバルエッジ上で動作し、データは一切保存されません。このページのブラウザ上でも同一コードが無料で動作します。
活用例
再現可能なパズルコンテンツの生成
同じ単語とシードから常に同じ結果が得られるため、答えを正確に再生成できる単語スクランブルパズルを構築できます。
シードで安定するテストフィクスチャ
実行ごとの不安定な乱数に左右されず、スナップショットテストで検証できるスクランブル済みのフィクスチャテキストを作成できます。
読解・知覚の教室デモ
先頭と末尾の文字が固定されたまま、内部の文字のスクランブルだけで単語が読み続けられる様子を学生に示せます。
よくある質問
結果はランダムですか?
いいえ。 完全に決定論的で、同じ単語とシードからは常に同じ結果が得られます。シードを変えれば別の並べ替えになります。
短い単語が拒否されるのはなぜですか?
4文字未満の単語には内部の文字が多くて1つしかなく、シャッフルするものがありません。
先頭と末尾の文字が動くことはありますか?
決してありません。 シャッフルされるのは、先頭と末尾の間にある文字だけです。
データは保存されますか?
いいえ。 単語はメモリ内で処理され破棄され、返されるのはスクランブル結果だけです。
同じ単語で別の並びにするにはどうしますか?
シードを変えてください。別のシードにすると同じ単語でも別の並びになり、同じシードを使えば前と同じ結果を正確に再現できます。パズルやゲームで役立ちます。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/text/scramble-word \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"word":"generation","seed":"kit-2026"}'const res = await fetch("https://api.kit.forhosting.com/text/scramble-word", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"word": "generation",
"seed": "kit-2026"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/text/scramble-word",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"word": "generation",
"seed": "kit-2026"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/text/scramble-word", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"word":"generation","seed":"kit-2026"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"word":"generation","seed":"kit-2026"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/text/scramble-word", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"word": "generation",
"seed": "kit-2026"
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "text.scramble_word",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
制限
max_tokens | 20000 |
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
scramble word letters API は、単語とシードを受け取り、先頭と末尾の文字を固定したまま単語の内部の文字だけをシャッフルします。
内部をシャッフルしても単語が読める理由
このエンドポイントは、まさにその変換を自動化します。「
設計上の決定論:シードが契約です
このエンドポイントではシードが入力の一部であり、アルゴリズムは完全に決定論的です。
入力ルール、エラー、適した用途
このエンドポイントは「word」(「text」や「input」も可)と「seed」(「salt」も可)の2つのフィールドを受け付けます。3文字以下では内部の文字が多くて1つしかなく、意味のあるシャッフルができないため、単語をそのまま返すのではなく、問題を明示した invalid_input エラーで応答します。API経由で自動化する場合のみ、リクエストごとに $0.002 をお支払いいただきます。
技術的な質問
料金はいくらですか?
リクエストごとに $0.002 です。このページ上でブラウザから無料で実行することもできます。