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

Ios arc4random:限制生成的随机数的值,ios,objective-c,random,arc4random,Ios,Objective C,Random,Arc4random,构建了一个iPhone应用程序,当按下一个按钮时,它会在标签上生成一个随机数 它工作正常,但我输入的任何值似乎都不会限制生成的随机数的值。它总是9位数 -(IBAction)genRandnum:(id)sender { NSNumber *randomNumber = [NSNumber numberWithInt: (arc4random() % 5) + 1]; NSNumber *randomLabeltxt = [[NSString alloc] initWithF

构建了一个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位数

  • NSNumber是Objective-C对象,因此您应该使用
    %@
    来显示它<代码>%d显示一个9位数字,因为这是该编号的地址

  • NSString与NSNumber不同

  • 正确且简化的代码应如下所示:

    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.
    
  • NSNumber是Objective-C对象,因此您应该使用
    %@
    来显示它<代码>%d显示一个9位数字,因为这是该编号的地址

  • NSString与NSNumber不同

  • 正确且简化的代码应如下所示:

    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.
    

    太棒了,这就解决了。我也解释得很好,这样我就能看出哪里出了问题。非常感谢(:太棒了,已经修好了。我也解释得很好,所以我可以看到哪里出了问题。非常感谢(:使用
    %
    生成随机数是一种不好的做法,因为它是有偏差的。最好使用
    arc4random\u uniform
    。使用
    %
    生成随机数是一种不好的做法,因为它是有偏差的。最好使用
    arc4random\u uniform