使用arc4random()的概率方程?

时间:2011-11-18 22:36:59

标签: ios math probability arc4random

在我的游戏中我知道我可以使用这个条件,但我想看看是否有一个数学方程式可以让我更容易。我想使用arc4random()

我需要的是:

  1. 如果我的分数是1-20,概率:25分中的1分
  2. 如果我的分数是21-40,概率:20分中的1分
  3. 如果我的分数是41-60,概率:15分中的1分
  4. 如果我的分数是60+,概率:10分之一。
  5. 这可能吗?如果是这样,我将如何实现这一目标?

    谢谢!

1 个答案:

答案 0 :(得分:1)

这应该可以解决问题(希望它很清楚!):

int modNumber = 25;
float alteredScore = score - (floor((score-1)/60) - 1) * 60;
modNumber -= floor((alteredScore-1)/20) * 5;
int result = arc4random() % modNumber;  // Or arc4random_uniform(modNumber) if you want to completely remove modulo bias, but beaing in mind the non-randomness (!) of arc4random and the size of modNumber I highly doubt it would make any real difference
if (!result) {
    // Result is 0
    // Do stuff for the lucky person
} else {
    // Make them miserable
}