传统上如果我想选择25%的案例,我会使用" arc4random()%"函数按整数触发1/4的情况。 现在我有4个浮动率的案例。让我们说吧,
0.3055
B 0.391
C 0.165
D 0.1485
A + B + C + d = 1
如何通过正确选择来开发一个随机选择器来触发4的情况?当然,案例B最有可能被选中。
非常感谢
答案 0 :(得分:2)
我不认为这是完美的,但它会让你接近
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
}
答案 1 :(得分:1)
通过从均匀分布中选择适当的概率。
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
循环绝对要重构。
答案 2 :(得分:0)
你想做一个多项式的样本。您可以在iOS中使用GSL或其他基于C或C ++的统计库执行此操作。