Main Content

nchoosek

二項係数、または、すべての組み合わせ

説明

b = nchoosek(n,k) は次のように定義される二項係数を返します。

Cnk=(nk)=n!(nk)!k!.

これは、n 個の項目から一度に k 個を取り出す組み合わせの数です。nk は非負の整数でなければなりません。

C = nchoosek(v,k) は、ベクトル v の要素から k 個を同時に取り出すすべての可能な組み合わせの行列を返します。行列 Ck 列 m!/((m–k)! k!) 行です。ここで m は length(v) です。

すべて折りたたむ

b = nchoosek(5,4)
b = 5
v = 2:2:10;
C = nchoosek(v,4)
C = 5×4

     2     4     6     8
     2     4     6    10
     2     4     8    10
     2     6     8    10
     4     6     8    10

v = uint16([10 20 30]);
C = nchoosek(v,uint16(2))
C = 3x2 uint16 matrix

   10   20
   10   30
   20   30

入力引数

すべて折りたたむ

可能な選択の数。非負の整数スカラーとして指定します。n は任意の数値型にすることができますが、実数でなければなりません。

例: 10

例: int16(10)

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

選択する数。非負の整数スカラーとして指定します。k は任意の数値型にすることができますが、実数でなければなりません。nchoosek(n,k) では nk が同じ型であるか、少なくともいずれか 1 つが double 型でなければなりません。

nchoosek(v,k) は、異なる型の入力の組み合わせについて制限はありません。

例: 3

例: int16(3)

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

すべての選択肢の集合。ベクトルとして指定します。

例: [1 2 3 4 5]

例: [1+1i 2+1i 3+1i 4+1i]

例: int16([1 2 3 4 5])

例: [true false true false]

例: ['abcd']

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | char
複素数のサポート: あり

出力引数

すべて折りたたむ

二項係数。非負のスカラー値として返されます。bn および k と同じ型です。nk の型が異なる場合、b は非 double 型として返されます。

v のすべての組み合わせ。v と同じ型の行列として返されます。行列 Ck 列 n!/((n–k)! k!) 行です。ここで n は length(v) です。

C の各行には、v から選択した k 個の要素の組み合わせが含まれます。C の各行の要素は、v 内の出現順序と同じ順序でリストされます。

k > numel(v) の場合、C は空行列です。

制限

  • b = nchoosek(n,k) が十分に大きい場合、nchoosek は結果が正確でない可能性があることを示す警告を表示します。この場合、結果は倍精度の入力に対して 15 桁、あるいは、単精度の入力に対して 8 桁しか正確ではありません。

  • C = nchoosek(v,k) は、length(v)15 未満の場合にのみ、実際に適用できます。

拡張機能

バージョン履歴

R2006a より前に導入