java雪花算法 平均分堆为什么会出现重复情况?重复要除以几的阶层,为什么?

平均分堆为什么会出现重复情况?重复要除以几的阶层,为什么?这里有一个简单的例子来说明,四个人平均分成两组,然后有(4C2)*(2c2)/(2A2)=三种情况,显然有三种情况:a、B、a、C、a和D(两

平均分堆为什么会出现重复情况?重复要除以几的阶层,为什么?

这里有一个简单的例子来说明,四个人平均分成两组,然后有(4C2)*(2c2)/(2A2)=三种情况,显然有三种情况:a、B、a、C、a和D(两组中的一个),因为选择了一组后,剩下的组将不会被划分,它将自动被划分分成一组。如果不除以群的阶乘,4C2*2c2中会有重复,有a,B,C,a,D,B,C,B,D和C(两个群中的一个)。此时,a、B和C将与B、D和a重复,因此我们需要排除重复:两组的完全排列2A2是相同的。六个ABCDEF被分成三组。选择AB、CE、DF组。按照6c2*4C2*2c2的算法,会有3a3种重复,即AB、CE、DF,答案是6c2*4C2*2c2/3a3