160411 php组合排列实现

学习系统实现组合排列

遇到个需求需要从100道题目中随机抽取10道题作为学习测试题,并且出现的组合不能重复,给出大概可用组合的次数.

组合排列实现:

//PHP乘阶实现
function factorial($n)
{
if ($n > 1) {
return $n * factorial($n - 1);
} else {
return 1;
}
}
//组合排列
function randGet($n, $m)
{
echo "{$n}个数中取{$m}个数随机排列,且不重复可有" . factorial($n) / factorial($n - $m) / factorial($m) . "次变种" . PHP_EOL;
}
randGet(3, 2);
randGet(6, 2);
randGet(100, 4);

执行结果:

3个数中取2个数随机排列,且不重复可有3次变种
6个数中取2个数随机排列,且不重复可有15次变种
100个数中取4个数随机排列,且不重复可有3921225次变种

参考:

  1. 乘阶
  2. 排列组合
  3. 解决公式
  1. 写的不错哈,支持一下

  2. 奇虎分享网说道:

    这个文章写的好,转走了!

  3. 夏日草博客说道:

    直接数组排序怎样

发表评论

电子邮件地址不会被公开。 必填项已用*标注