我想根据百分比随机生成YES或NO
所以我想"滚动"并有25%的几率击中YES,有75%的几率击中NO
希望有人可以指出我在最佳方式上做正确的方向,也许是一些文章或什么?
rob*_*off 15
所有其他答案似乎都集中在YES的百分比为25%,这是1/4的概率.但是如果百分比是0到100之间的任意整数呢?
BOOL randomBoolWithYesPercentage(int percentage) {
return arc4random_uniform(100) < percentage;
}
Run Code Online (Sandbox Code Playgroud)
用百分比称呼它,比如randomBoolWithYesPercentage(25).
如果百分比可以是分数,如37.6%怎么办?然后我们需要变得更加复杂.这应该足够了:
BOOL randomBoolWithYesPercentage(double percentage) {
double r = 100 * (double)arc4random() / ((double)UINT32_MAX + 1);
return r < percentage;
}
Run Code Online (Sandbox Code Playgroud)
使用具有相等分布的随机函数,并使其尽可能等于其中一个可能的值
BOOL RollWithDenominator(NSInteger denominator)
{
return 0 == arc4random_uniform(denominator);
}
Run Code Online (Sandbox Code Playgroud)
1/4的机会 RollWithDenominator(4);
| 归档时间: |
|
| 查看次数: |
2715 次 |
| 最近记录: |