トップページ > プログラミング研究室 > Ways!
Ways!
異なるn個の元 (element) からなる有限集合 (finite set) の中からr個を選ぶ順列 (permutation) や組み合わせ (combination) の総数 (number of ways) を計算します。
[ 戻る ]
場合の数の計算
nとrから算出
| 項目 |
結果 |
| 組合せ |
|
| 重複組合せ |
|
| 順列 |
|
| 重複順列 |
|
| 円順列 |
|
| 数珠順列 |
|
| 確率 |
|
nのみで算出
| 項目 |
結果 |
| 完全順列 |
|
| 階乗 n! |
|
| 二重階乗n‼ |
|
| 中心二項係数 |
|
| Catalan数 |
|
| Motzkin数 |
|
| 電話数 |
|
| 怠け仕出し屋数 |
|
| ケーキ数 |
|
[ 戻る ]
使用方法
- nとr (n≥r≥0) に999以下の自然数 (natural number) を入力してから、[計算]ボタンをクリックします。
- 以下の値はnとrの両方から算出します。
- 組合せ (combination) nCr
- 異なるn個の中からr個を重複なく選んだときの組合せの数。(x+y)nの展開におけるxn-ryrの係数である二項係数 (binomial coefficients) と同じ
- 重複組合せ (combination with repetition) nHr
- 異なるn個の中からr個を重複を許して選んだときの組合せの数
- 順列 (permutation) nPr
- 異なるn個の中からr個を重複なく選んで並べたときの場合の数
- 重複順列 (permutation with repetition) nΠr
- 異なるn個の中からr個を重複を許して並べたときの場合の数
- 円順列 (circular permutation) cir(n,r)
- 異なるn個の中からr個を重複なく選んで円形に並べたときの場合の数
- 数珠順列 (necklace problem) neck(n,r)
- 円順列のうち、裏返して一致するものを同じとみなしたときの場合の数
- 確率 (probability
- 全体がn通り、事象Aが起こる場合がr通りのときのAが起こる確率p(r)
- 以下の値はnのみからの算出で、rは使用しません。
- 完全順列 (complete permutations)・攪乱順列 (derangement) Dn, !n
- 1からnまでの自然数を要素とする順列において、i番目 (i≤n) がiでない順列
- 階乗 (factorial) n!
- 1からnまでの全ての自然数の積
- 二重階乗 (double factorial) n‼
- 1からnまでnと同じ偶奇性 (parity) を持つ自然数の積
- 中心二項係数 (central binomial coefficient) 2nCn
- パスカルの三角形 (Pascal's triangle) の奇数行の真ん中の値
- カタラン数 (Catalan number) cn
- 中心二項係数をn+1で除した値で、ノード (node) 数nの二分木 (binary tree) の総数、n-1段の階段状格子路の最短経路、凸n+2角形 (convex n+2 polygon) の三角形分割、n組の括弧付けなどの数え上げに登場する数
- モツキン数 (Motzkin number) Mn
- 円周上の相異なるn個の点を互いに交わらない線分で結ぶ方法の数
- 電話数 (telephone number) Tn
- n人の電話加入者が1:1で接続できる最大数。また、n個の要素の集合からそれ自身への写像のうち、2回行うと元の要素に戻るものである対合 (involution) の総数を表す対合数 (involution number) と同じ
- 怠け仕出し屋数 (lazy caterer number)
- 円形の平面をn回の直線カットで分割できる最大の破片数[別名: 中心多角形数 (central polygonal number)]
- ケーキ数 (cake number)
- 3次元の立方体を正確にn枚の平面で分割できる領域の最大数
[ 戻る ]
利用上の注意
- Microsoft Edge、Internet Exploler 11、FireFox 45.0以降での動作を確認しています。
- その他のブラウザでの動作は保証いたしません。
- 計算結果が9007199254740991 (=253−1) より大きいときは指数表現の近似値になります。
- 計算結果が1.7976931348623157×10308 (≈21024) 以上のときは"Infinity"と表示します。
- 円順列ではn≥r>0、数珠順列ではn≥r≥3である必要があります。
- サポートは一切行いません。
- 気が向いたときに改良や修正をします。
[ 戻る ]
アルゴリズム
各値は次式で算出しています。
- 階乗
- 二重階乗
- 順列
- 組合せ
- 重複組合せ
- 重複順列
- 円順列
- 数珠順列
- 確率
- 完全順列
- 中心二項係数
- カタラン数
- モツキン数
- 電話数
- 怠け仕出し屋
- ケーキ数
確率で表示する分数 (fraction) は分子 (numerator) と分母 (denominator) の最大公約数 (greatest common divisor) をユークリッドの互除法 (Euclidean Algorithm) で求めて約分 (reduce a fraction) をしています。下記の reduce_fraction 関数の戻り値はMathML (Mathematical Markup Language) の文字列で返しています。
var reduce_fraction = function(num, denom) {
const tag_math_1 = '<math><mfrac><mn>';
const tag_math_2 = '</mn><mn>';
const tag_math_3 = '</mn></mfrac></math>';
var gcd = (function(a, b) {
/* Euclidean Algorithmによる最大公約数の計算 */
var r;
while (b !== 0) {
r = a % b;
a = b;
b = r;
}
return Math.abs(a);
}(num, denom));
num /= gcd;
denom /= gcd;
return tag_math_1 + num + tag_math_2 + denom + tag_math_3;
};
[ 戻る ]