组合学 - MetaTrader 5 库
组合函数的初始库。
组合学是一个分支数学,研究离散结构,套(组合,排列、安排和枚举组合学)以及它们之间的关系(例如,部分有序集)。组合学与许多其他领域相关数学例如代数,几何学,概率论并且在不同的知识领域有广泛的应用(例如遗传学,计算机科学,统计物理学)。
1)第一个函数:
//+------------------------------------------------------------------+ //| 数字阶乘 | //+------------------------------------------------------------------+ 双倍的阶乘(整数x);
阶乘是一个增长极快的函数。它的增长速度快于多项式任何程度并且比指数函数(但比双指数函数慢)。
这就是为什么返回值必须是双倍的类型。这样做是因为阶乘增长太快并且已经是 13 了!不符合 a 的范围长的类型。
2)第二个函数:
//+------------------------------------------------------------------+ //| 组合(组合) | //+------------------------------------------------------------------+ 双倍的组合(整数尼,整数k);
组合允许从由 N 个元素组成的集合中选择唯一的元素集合。每个集合将有 k 个元素。
因此,此类集合的数量将是组合的数量:
C(k,N) = C(3,10) = 120。
IE。每个信号上有 3 个信号,有 120 种独特的组合。
3)第三个函数:
//+------------------------------------------------------------------+ //| 与重复的组合(组合) | //+------------------------------------------------------------------+ 双倍的_组合(整数尼,整数k);
与重复的组合承认在集合中某些元素可以出现多次。假设有五个水果。由 3 个元素组成的集合有 2 个橙子和 1 个苹果。这样的组合是重复的组合。橙子重复道。
对于 10 个信号的集合和可能的集合(3 个信号),我们找到了许多具有重复的组合:
〜C(k,N)=〜C(3,10)= 220。
4)第四个函数:
//+------------------------------------------------------------------+ //| 安排 | //+------------------------------------------------------------------+ 双倍的安排(整数尼,整数k);
排列与组合的不同之处在于,重要的不是套件,而是套件中元素的顺序。假设有 2 个包含 3 个元素的集合:苹果-橙子-香蕉,苹果-香蕉-橙子。就组合而言,我们只有一种组合(一组参与者)。但就排列而言,有两种组合(参赛者在一组中改变顺序)。
显然,排列方式将多于组合方式。例如,从信号集(10 个信号)和可能的信号集(3 个信号)中,我们可以得到尽可能多的排列:
A(k,N) = A(3,10) = 720。
5)第五个函数:
//+------------------------------------------------------------------+ //| 重复排列 | //+------------------------------------------------------------------+ 双倍的_安排(整数尼,整数k);
IE。就像组合的情况一样,承认集合中的元素可以重复。
那么对于 10 个信号的集合和可能的集合(3 个信号),我们将得到这样一些重复的排列:
〜A(k,N)=〜A(3,10)= 1000。
6)第六个函数:
//+------------------------------------------------------------------+ //| 排列 | //+------------------------------------------------------------------+ 双倍的排列(整数N);
排列可以让我们知道有多少种方法可以改变元素集中的顺序。
因此,对于信号集(10 个信号),我们可以获得尽可能多的排列:
P(N) = P(10) = 3 628 800。
对于 3 个信号的集合,我们可以获得尽可能多的排列:
排列数回报 阶乘。因此,3 个元素和 10 个元素的排列数之间存在差异。
7)第七个函数:
//+------------------------------------------------------------------+ //| 重复排列 | //+------------------------------------------------------------------+ 双倍的_排列(整数&nM[]);
IE。就像组合的情况一样,承认集合中的元素可以重复。
仅作为参数传递数组,其中每个元素指示可以重复多少次。
例如,有3个信号,每个信号重复一次,则:
~P(N) = ~P({1,1,1}) = 6。
IE。 ~P({1,1,1}) = P(3)。
假设第一个信号可以重复2次,则:
~P({2,1,1}) = 12。
附件下载
📎 combinatorics.mqh (4.81 KB)
Source: MQL5 #1197
💡 精彩内容推荐
✍️ 楼主最新发布
- •
- •
- •
- •
- •
- •
🔗 您可能感兴趣
- •
- •
- •
- •
- •
- •
