アルゴリズム:順列の公式
順列?初めて聞いた言葉の如く、数学を全く覚えていません。
数学ガール 乱択アルゴリズムに出てきた順列の公式のアルゴリズムを書いてみました。
順列の公式
問題:異なる6個の中から4個を取り出す時の並べ方は何通りか?
コードの説明
まず、関数名を定義して、引数nとkを受けます。
def junretu(n,k):
変数に初期値を与えます。
plusnum = 1 result = 0
順列の公式の説明式の分母の数値をnnに格納します。
nn = n-k #6-4=2
順列の公式の説明式の分子の数値をkaisuuに格納します。
kaisuu = n - nn #6-2=4
resultは、式の結果を入れる変数です。初期値にnの値を入れます。
result = n
kaisuuの数値に達するまで、resultのかけ算を続けます。
while plusnum < kaisuu: result = (result * (n - plusnum)) plusnum += 1
結果をreturnします。
return result
関数junretuに引数6と4を入れて、計算しています。
print(junretu(6,4))
実行結果
360
360通りという答えが帰ってきました。正解です。
全体のコード
"""順列の公式のアルゴリズム""" """異なる6個の中から4個を取り出す時の並べ方は何通り?""" """nPk 6P4 n*(n-1)*(n-2)*(n-3)*(n-4)""" def junretu(n,k): plusnum = 1 result = 0 nn = n-k #6-4=2 kaisuu = n - nn #6-2=4 result = n while plusnum < kaisuu: result = (result * (n - plusnum)) plusnum += 1 return result print(junretu(6,4))