这个算法简单
float preferencePercentScaler = (highAvailableVolumes.size() * balancedPreferencePercent) + (lowAvailableVolumes.size() * (1 - balancedPreferencePercent)); float scaledPreferencePercent = (highAvailableVolumes.size() * balancedPreferencePercent) / preferencePercentScaler; ...
random.nextFloat() < scaledPreferencePercent)
其中 highAvailableVolumes.size() 理解为事件A出现X1次, lowAvailableVolumes.size()理解为事件B出现X2
balancedPreferencePercent 是给事件A权重
期望值值 E(x)=∑ixip(xi) (代码中preferencePercentScaler就是期望值)
scaledPreferencePercent变量X1在期望值中所占的比例,scaledPreferencePercent实际上才是事件A被选中的概率
scaledPreferencePercent值随X1的出现而变大
欢迎提问