2017-12-09 5 views
-2

私はchoose(5,2)の二項係数を計算する方法を知っていますが、今私はchoose(5,2.1)を計算できる関数があるかどうかを知りたいPythonまたはRプログラミング言語?非整数で二項係数を計算する方法

+0

私はそれを計算するために計算機を使用することができますが同じです10.304になるので、この質問は理にかなっています。 – Yaphet

+0

あなたはこれまでにどのようなコードを書いていますか?ここで意味のあるコードと問題の説明を追加するには[編集]してください。 (最小限、完全で、検証可能な例)を投稿すると、より良い回答を得るのに役立ちます。 ありがとう! –

答えて

1

scipyからのガンマ関数と、2項係数の拡張定義を使用します。

>>> from scipy.special import gamma 
>>> def choose(x,y): 
...  return gamma(x+1)/(gamma(y+1)*gamma(x-y+1)) 
... 
>>> choose(5,2.1) 
10.304042688575837 
3

"N Kを選択し、" するための組み合わせ式はnkが整数である

enter image description here

によって与えられます。実数の集合でxyための一般的なバージョンは、はガンマ関数、階乗の一般的な形態である

enter image description here

によって与えられます。

Pythonでこれを作成するには、以下を使用することができます。

Rで
import math 

def generalized_binomial(x,y): 
    return math.gamma(x+1)/(math.gamma(y+1) * math.gamma(x-y+1)) 

generalized_binomial(5,2.1) 
# returns: 
10.304042688575835 
1

あなたがgammaを使用して、このような関数を作ることができる:

choose <- function(x, y) { 
    return(gamma(x+1)/(gamma(y+1)*gamma(x-y+1))) 
} 

print(choose(5,2.1)) # 10.30404 
関連する問題