傳統上,如果我想選擇發生25%的情況,我使用「arc4random()%」函數以整數觸發1/4機會的情況。 現在我有4個浮動利率的情況。比方說,如何通過自定義編號創建隨機選擇器?
一0.3055
乙0.391
Ç0.165
d 0.1485
A + B + C + d = 1
我怎樣才能建立一個隨機選擇器通過正確選擇觸發4的情況?當然,案例B獲得最多機會被選中。
非常感謝
傳統上,如果我想選擇發生25%的情況,我使用「arc4random()%」函數以整數觸發1/4機會的情況。 現在我有4個浮動利率的情況。比方說,如何通過自定義編號創建隨機選擇器?
一0.3055
乙0.391
Ç0.165
d 0.1485
A + B + C + d = 1
我怎樣才能建立一個隨機選擇器通過正確選擇觸發4的情況?當然,案例B獲得最多機會被選中。
非常感謝
通過與從均勻分佈適當的概率選擇。
int myOwnFunkyDistribution(void)
{
uint32_t A = 0.3055 * UINT32_MAX;
uint32_t B = A + 0.3910 * UINT32_MAX;
uint32_t C = B + 0.1650 * UINT32_MAX;
uint32_t r = arc4random();
if (r < A)
return 0;
if (r < B)
return 1;
if (r < C)
return 2;
return 3;
}
隨着越來越多的情況下,這是絕對使用陣列和for
循環進行重構。
你想做一個多項式樣本。您可以在iOS中使用GSL或其他基於C或C++的統計信息庫。
我不認爲這是完美的,但它會得到您關閉
int probability = arc4random_uniform(10000);
NSLog(@"Probability: %i", probability);
if (probability < 3055) {
// A
}
else if (probability <= (3055 + 3910)) {
// B
}
else if (probability <= (3055 + 3910 + 1650)) {
// C
}
else {
// D
}
我張貼解決類似的問題在這裏,http://stackoverflow.com/questions/13635448/generate-隨機數中之範圍與 - 不同-概率/ 13637027#13637027。 – user515430