排列:n个元素中x个元素有多少种唯一的可能



我数学不太好,所以我被困在这里了。我需要得到n中X元素的可能排列(我认为,或者可能是排列?)的总数。

  • 我想在N (N>=X)
  • 中选择X个不同的元素
  • 顺序很重要
  • 每个元素不能在一个组合中出现超过一次

=>例如,给定$N = count(1,2,3,4,5,6,7,8,9), $X=6元素的有效组合可以是:

 - 1,4,5,3,2,8
 - 4,2,1,9,7,3

我需要在PHP中使用什么公式来获得可能性的总数?

第一个元素有N个选择,第二个元素有N-1个选择(因为你已经选择了1个),第三个元素有N-2个选择,以此类推。你可以用阶乘来表示这个N!/(N-X-1) !参见https://en.wikipedia.org/wiki/Permutations

好的,我想我明白了。

$set = array(A,B,C,D,E,F,G);
$n = count($set);
$k = 6;
if($n>0)
{
    if($k < $n)
    { 
        $outcomes = gmp_fact($n) / gmp_fact($n-$k);
    } 
    else 
    { 
        $outcomes = gmp_fact($n);
    }
} else { $outcomes = 0; }

其中gmp_fact($n)是$n的PHP函数!(n !)也就是n x (n -1) x…x 1

最新更新