這個算法簡單
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的出現而變大
歡迎提問