天软金融分析.NET函数大全 > TSL函数 > 数学函数 > 数值计算 > 其他

perms    

简述
样本排列
算法说明:
输入整数v,返回v的阶乘V!,即排列组合数;
输入一维数组v, n=length(v),返回n个数据的n!种排列组合,二维数组;
输入一维数组v,整数k,n=length(v),返回v中任意k个元素的Vnk种排列组合,二维数组;
输入二维数组v,整数k, 重构v中所有元素为一维数组v ,n=length(v),返回v中任意k个元素的Vnk种排列组合,二维数组;
输入tsl类对象func,对于返回结果进行编辑;
注:排列的种类太多了,当输入数组长度超过10 时 排列种类达到 3628800 种,就会引发计算机内存问题。
定义
perms(x:array):array;
参数
名称类型说明
Xarray样本,数组或数字
k:Int 选取个数
func:tsl类对象 默认二维表展示所有组合数据
  • 范例

    范例01:求10的阶乘
    Return perms(10);

    返回结果:3628800
    范例02:排列组合
    Return perms(array("a","b","c"));

    返回结果:
    array(
    ("c","b","a"),
    ("c","a","b"),
    ("b","c","a"),
    ("b","a","c"),
    ("a","b","c"),
    ("a","c","b"))
    范例03:返回数组Array(('A','B'),('C', 'D'))中任意两个数据的排列组合
    v:= Array(('A','B'),('C', 'D'));
    Return perms(v,2);

    返回结果:

    范例04:对排列组合的每列求和
    Function test_1cth();
    Begin
      func:=createobject("funcexe");
      a:=array("A","B","C");
    return perms(a,3,func);
    End;
    type funcexe = class()
      data;
      function create();
      begin
       data := "";
      end
      function exe(dat);
      begin
        data+=dat;
      end
    end

    返回结果:
相关