2012-01-13 67 views
1

我有以下输入(由NSLog验证):xleft = 128, xRight = 192。接下来的代码行使用these-Xcode arc4random()表现不如预期

xPos = (arc4random() % xRight-xleft) + xleft; 

在最后运行,XPOS = 53。通过我的计算,应不低于128更少,如果产生的随机数是零(192 - 128 = 64, rand(64) = 0, 0 + 128 = 128。我正在尝试生成xLeft到xRight范围内的随机数字。

回答

2

%在C具有更高的优先级,并直接衍生等的Objective-C比+和语言 - 。它等于*和/。

  1. 获取arc4random
  2. 得到的模量和Xright确定
  3. 减xLeft
  4. 添加xLeft

所以,你应该期望什么:

所以作为表达式求值在范围[0,xRight)

+0

非常感谢,这是我失踪的模数优先,欢呼。 – Skybird 2012-01-13 22:31:01