Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Math 如何找到具有2个属性的3个对象的所有可能组合,这2个属性将总计为3个不同的属性_Math_Combinations_Formula - Fatal编程技术网

Math 如何找到具有2个属性的3个对象的所有可能组合,这2个属性将总计为3个不同的属性

Math 如何找到具有2个属性的3个对象的所有可能组合,这2个属性将总计为3个不同的属性,math,combinations,formula,Math,Combinations,Formula,我试图找出代表以下情况的数学公式: 我有X个颜色,Y个球,每个球有2种颜色 我通过以下公式计算球的Y数量: Y=X!/(X-2)!*2! 现在,我的任务是找出3个球的组合总量,其形式如下: 第一个球和第二个球有一种相似的颜色 第一个球和第二个球的第二种颜色不能相同 第三个球具有其他两个球的颜色(它们之间不共享) 我写了一个代码,可以帮助我模拟我正在寻找的东西,但无法将其反向工程为公式,可以帮助我在不模拟的情况下计算数值结果 代码: var Colors = ['red', 'blue', 'gr

我试图找出代表以下情况的数学公式:

  • 我有X个颜色,Y个球,每个球有2种颜色
  • 我通过以下公式计算球的Y数量: Y=X!/(X-2)!*2! 现在,我的任务是找出3个球的组合总量,其形式如下:

  • 第一个球和第二个球有一种相似的颜色
  • 第一个球和第二个球的第二种颜色不能相同
  • 第三个球具有其他两个球的颜色(它们之间不共享)
  • 我写了一个代码,可以帮助我模拟我正在寻找的东西,但无法将其反向工程为公式,可以帮助我在不模拟的情况下计算数值结果

    代码:

    var Colors = ['red', 'blue', 'green', 'yellow', 'white' , 'black'];
    
    C = Colors.length;
    document.write("Balls: " + Colors.length + '<br>');
    document.write(Colors.join() + '<br>');
    
    BallsCount = (sFact(C) / (sFact(C-2) * 2));
    document.write("BallsCount: " + BallsCount + '<br>');
    
    var Balls = new Array();
    for (i=0, c=1; i<Colors.length;i++)
      for (x=i+1; x<Colors.length; c++, x++)
      {
        document.write(c + ": " + Colors[i] + '/' + Colors[x] + '<br>');
        Balls[c-1] = Colors[i] + '/' + Colors[x];
      }
    
    //Triangles = BallsCount / 3;
    TrianglesCount = (sFact(BallsCount) / (sFact(BallsCount-3) * sFact(3)));
    document.write("Triangles: " + TrianglesCount + '<br>');
    
    var Triangles = new Array();
    for (i=0, c=1; i<Balls.length;i++)
      for (y=i+1; y<Balls.length; y++)
        for (x=y+1; x<Balls.length; x++)
        {
          if (Balls[i].split('/')[0] == Balls[y].split('/')[0] && ( Balls[i].split('/')[1] + '/' + Balls[y].split('/')[1] == Balls[x] || Balls[y].split('/')[1] + '/' + Balls[i].split('/')[1] == Balls[x]))
          {
            document.write(c + ": " + Balls[i] + " - " + Balls[y] + " - " + Balls[x] + '<br>');
            Triangles[c] = Balls[i] + " - " + Balls[y] + " - " + Balls[x];
            c++;
          }
        }
    
    function sFact(num)
    {
        var rval=1;
        for (var i = 2; i <= num; i++)
            rval = rval * i;
        return rval;
    }
    
    计算组合总量的公式是什么

    另一个问题是,例如,如果Alice有一组如上所述的球,Bob有一组类似的球,有Alice有的颜色,有她没有的颜色(反之亦然),那么对于N个参与者,我如何计算所有参与者加在一起的3个组合的最大数量?(每个参与者允许有一个以上的球)

    谢谢。

    正如埃戈尔所说:X/[(X-r)!(r!)]
    顺序不重要,不允许重复。“三角形”的情况是r=3,6/(3!3!)=20

    三角形的总数是颜色的三倍数=X!/(3!*(X-3)!)
    Colors: 6
    
    red,blue,green,yellow,white,black
    
    Balls: 15
    
    1. red/blue
    2. red/green
    3. red/yellow
    4. red/white
    5. red/black
    6. blue/green
    7. blue/yellow
    8. blue/white
    9. blue/black
    10. green/yellow
    11. green/white
    12. green/black
    13. yellow/white
    14. yellow/black
    15. white/black
    
    Triangles:
    
    1. red/blue - red/green - blue/green
    2. red/blue - red/yellow - blue/yellow
    3. red/blue - red/white - blue/white
    4. red/blue - red/black - blue/black
    5. red/green - red/yellow - green/yellow
    6. red/green - red/white - green/white
    7. red/green - red/black - green/black
    8. red/yellow - red/white - yellow/white
    9. red/yellow - red/black - yellow/black
    10. red/white - red/black - white/black
    11. blue/green - blue/yellow - green/yellow
    12. blue/green - blue/white - green/white
    13. blue/green - blue/black - green/black
    14. blue/yellow - blue/white - yellow/white
    15. blue/yellow - blue/black - yellow/black
    16. blue/white - blue/black - white/black
    17. green/yellow - green/white - yellow/white
    18. green/yellow - green/black - yellow/black
    19. green/white - green/black - white/black
    20. yellow/white - yellow/black - white/black