arc4random:限制生成的随机数的值

时间:2010-10-05 09:43:49

标签: ios objective-c random arc4random

构建了一个iPhone应用程序,当按下按钮时,该应用程序会为标签生成一个随机数。

它工作正常,但我放的任何值似乎都不限制生成的随机数的值。它总是9位数。

-(IBAction)genRandnum:(id)sender {

    NSNumber *randomNumber = [NSNumber numberWithInt: (arc4random() % 5) + 1];

    NSNumber *randomLabeltxt = [[NSString alloc] initWithFormat:@"It worked!", randomNumber];
    randLabel.text = [NSString stringWithFormat: @"%d", randomLabeltxt];
    [randomLabeltxt release];
}

正如你所看到的,我在%符号后面加了5,但它产生了9位数字。

1 个答案:

答案 0 :(得分:6)

  1. NSNumber是一个Objective-C对象,因此您应该使用%@来显示它。 %d显示一个9位数字,因为它是该NSNumber的地址。

  2. NSString与NSNumber不同。

  3. 正确和简化的代码应如下所示:

    int randomNumber = (arc4random() % 5) + 1;
    // no need to create an NSNumber if you do not need to store it into an NS container.
    
    randLabel.text = [NSString stringWithFormat:@"It worked! %d", randomNumber];
    // no need to create an intermediate NSString variable.
    //  you can directly assign the string to the label's text.