同一物を含む順列
BANANAの文字を並べ替えると、異なる単語は60通りできます。6文字のうちAが3つ、Nが2つあるためです。総数と同じものの反復回数を入力すると、異なる並べ方の正確な数が分かります。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
計算例
- N
- 6
- 繰り返し数
- 3, 2, 1
- 数量
- 60
同一物の 反復を 含む 順列は、 総数と 同一項目の 度数から 始めるとき、 混在した 集まりが 取りうる 相異なる 順序付き 配列が 何通りあるかを 数えます。n 個の 対象を お持ちで、 その一部が 区別できない 複製である 場合、 異なる 系列の 個数は n の 階乗を、 列挙した 各 反復回数の 階乗の 積で 割った 値です。本計算機は その対 — 総数 n と 度数の 一覧 — を 受け取り、 正確な BigInt 算術で 恒等式を 評価し、 順列の 件数を 十進の 文字列として 返します。サンプリングも 通信も 時計依存の 丸めもなく、 有効な 対は 毎回 同じ 整数に なります。課金経路と 無料経路は 同じ 純関数を 共有し、 宿題 確認と LMS 採点と パイプライン 試験が 食い違うことは ありません。
同一物の反復を含む順列が数えるもの
同一物の反復を含む順列とは、一部の成員を見分けられない有限の集まりについて、相異なる順序付き配列の個数です。位置(または対象)の総数を n とし、見分けられない各種類が現れる回数を n1 、 n2 、… nk と書きます。
同じ種類の複製を二つ入れ替えても新しい配列にはならないため、完全にラベル付けした集まりの n の階乗通りの並びは、第一種で n1 の階乗、第二種で n2 の階乗、というふうに数え過ぎます。したがって正確な恒等式は、 n の階乗をそれらの階乗の積で割ったものです。教室の定番確認には BANANA の文字があります。
六文字で A が三つ、 N が二つ、 B が一つなので、六の階乗を三の階乗・二の階乗・一の階乗で割ると六十通りの相異なる語になり、 MISSISSIPPI は十一文字で度数が一・四・四・二なので、十一の階乗をそれらの階乗で割ると三万四千六百五十になります。これは一部の教科書が同じく反復順列と呼ぶ n の r 乗の積ではありません。
そちらは n 個の記号の字母から独立な r 個の枠を埋めて n の r 乗になります。ここでは長さはすでに n であり、入力は各同一グループの度数です。列挙した度数が n より大きいと集まりは不可能であり、本計算機はゼロや符号付き拡張を返す代わりに要求を拒否します。
度数の和が n より小さいときは余りとして一意な項目が残り、余りはそれぞれ分母に一の階乗を寄与するだけで整数は変わらないため、同じ公式がそのまま使えます。実装は標本化せず、時計に依存せず、丸めません。大きな件数を浮動小数の仮数に溢れさせず正確な整数のまま保つため、列挙した階乗の積で n の階乗を割る計算を正確な BigInt 算術で評価します。
アナグラム、座席、競技の神託
語学の教員と謎かけの著者は、与えられた文字列を並べ替えて相異なる語が何通り作れるかを問うとき、この件数を使います。文字が項目、各文字のヒストグラムが反復回数の一覧、答えはまさにそれらの階乗の積で n の階乗を割った値です。見分けられない複製を含むビーズ・塩基・色付き座席を並べる化学や遺伝の問題も同じ整数に従います。
統計の講師は、同一結果の標本化を、独立な枠を埋める n の r 乗の積と対比して紹介し、競技プログラマは各言語の装具で多倍長の階乗除算を再実装しないよう正確な神託を必要とします。試験生成器は、成功経路を n が六で repeats が三・二・一(結果は六十)に固定し、拒否経路を n より大きい任意の度数(ゼロを返さず失敗すべき)に固定できます。
姉妹ページは、復元付きの順序選択の n の r 乗、一般の多項係数、反復なし順列を狙うことがあります。この着地は、入力が総数と同一項目の反復回数であるときの「反復を含む順列」という言い回しに特化しています。実際の相異なる文字列が必要なら、ご自身の列挙コードと件数を組み合わせてください。
本能力は整数の件数だけを返します。
活用例
反復文字を含む語の相異なるアナグラム
BANANA や MISSISSIPPI のような語が何通りの相異なる並べ替えを持つかを、文字の総数 n と各反復文字のヒストグラムを送って数えます。
n! / n1! n2! … の宿題と試験の確認
学習者に総数と同一項目の反復回数を提出させ、手計算した反復を含む順列の答えを照合します。度数が n を超えたときの硬い拒否も含みます。
競技の神託と同一席を含む座席計画
多重集合の順列問題を判定するときや、見分けられない複製と余った一意項目を混ぜた座席計画の規模を見るときに、正確な配列件数を取得します。
よくある質問
同一物の反復を含む順列とは何ですか?
一部の項目が見分けられないとき、 n 個の項目の相異なる順序付き配列を数えます。反復回数が n1 、 n2 、… nk なら、件数は n!/ (n1! × n2!× … × nk!) です。
反復回数が総数より大きいとどうなりますか?
同一項目のグループは集まりが含む位置より多くを占有できないため、列挙した各度数は 0 ≤ ni ≤ n を満たさねばなりません。
n の r 乗の反復順列とは何が違いますか?
積 n^r は n 個の記号の字母から独立な r 個の枠を埋めます(順序は問われ、再利用は許されます)。本頁は代わりに固定の総数 n と同一複製の度数を取り、 n!/ (n1! n2! … nk!)を返します。
順列の件数が文字列なのはなぜですか?
大きな n! / (n1!n2! …) は JavaScript の安全整数を超えます。十進文字列は、対応するすべての n と反復回数の一覧について各桁を正確に保ちます。
反復回数の合計がnより小さいときはどうなりますか?
残りの項目は、それぞれ1つずつの異なるものとして扱われます。分母に1の階乗が加わるだけなので結果は変わらず、同じ式のまま計算できます。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/stat/permutation-with-repetition \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"n":6,"repeats":[3,2,1]}'const res = await fetch("https://api.kit.forhosting.com/stat/permutation-with-repetition", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"n": 6,
"repeats": [
3,
2,
1
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/stat/permutation-with-repetition",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"n": 6,
"repeats": [
3,
2,
1
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/stat/permutation-with-repetition", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"n":6,"repeats":[3,2,1]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"n":6,"repeats":[3,2,1]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/stat/permutation-with-repetition", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"n": 6,
"repeats": [
3,
2,
1
]
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "stat.permutation_with_repetition",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
制限
max_n | 10000 |
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
列挙した いずれかの 度数が n より 大きいときは、 グループが 集まりの 席数を 超えて 占有できないため、 要求は invalid_input で 失敗します。
総数と反復回数の送り方
欄 n は項目の総数 — n の階乗の分子の添字 — であり、零から一万までの整数でなければなりません。欄 repeats は空でない非負整数の配列で、見分けられないグループごとに一つの要素があり、そのグループが寄与する同一複製の個数を示します。度数の和も高々 n でなければならず、さもなければ列挙した複製が集まりを溢れさせます。成功応答は n と正規化した repeats 配列をエコーし、正確な順列値の十進文字列として count を返し、クライアントが手書きせずに規則を表示・記録できるよう formula に恒等式 n!/(n1! n2! … nk!)アナグラム検査、プログラミング競技の検証器、面接準備の砂場、表計算の補強ジョブ、確率の段の前に相異なる配列の件数を必要とする離散数学の演示から、この端点をお使いください。必須の二欄を持つ JSON 本体を POST してください。同じ意味で alias の total と N も受け付けます。alias の repeat_counts と frequencies は同じ配列に対応します。各度数は零から n までの整数でなければならず、いずれかの要素が n より大きいと、反復回数が総数を超えたというメッセージとともにタスクは invalid_input で失敗します。を含めます。 失敗した検証 — n または repeats の欠落、非整数、分数、負値、公開上限を超える値、空配列、あるいは n を超える任意の度数 — は invalid_input を返し、課金されません。料金は成功した要求一件あたり定額の $0.002 で、単位は item です。安全整数の上限を超える値が JSON 輸送で下位桁を失わないよう、 JavaScript の Number を無理に使うより文字列の件数を選んでください。
アナグラム、座席、競技の神託
最悪の階乗が Worker 隔離とブラウザでなお速く終わり、安全な Number 範囲を大きく超える教材・競技規模を覆うよう、 n は高々一万に保ってください。invalid_input を返す失敗タスクは前払い残高を消費しないため、契約を学ぶ途中で不可能な度数を打っても探索スクリプトは安いままです。実装は純な parse であるため、成功した呼び出しは毎回、公開の $0.002 の基本料金であり、モデルトークンも外向き通信もありません。
技術的な質問
反復を含む順列の計算機の料金はいくらですか。
ブラウザ用具は無料で、お使いの端末で動きます。 API 呼び出しは成功した要求一件あたり $0.002 で前払いの KIT 残高を使い、無効な入力は請求されません。