生成任意18位数的随机NSInteger

use*_*474 2 random objective-c ios

我试过这个:

NSInteger numberFinal = 100000000000000000 + ((float)arc4random() / UINT32_MAX) * (999999999999999999 - 100000000000000000);
Run Code Online (Sandbox Code Playgroud)

但它返回零...我不想指定范围,但只想要任何18位数的数字......

Gop*_*ath 6

对于您的要求,正如@duDE所提到的,您不能使用a NSInteger来保存18位数字,但有一个解决方案使用NSString.

NSString *eighteenDigitNumberString = [[NSNumber numberWithInt:1 + arc4random_uniform(9)] stringValue];

for (int i = 0; i < 17; i++) {

    eighteenDigitNumberString = [eighteenDigitNumberString stringByAppendingString:[[NSNumber numberWithInt:arc4random_uniform(10)] stringValue]];
}

NSLog(@"eighteenDigitNumberString : %@", eighteenDigitNumberString);
Run Code Online (Sandbox Code Playgroud)

我们去,没有必要解释一切都是直截了当的.

编辑:如果你真的想要很长的价值,你可以这样做:

long long eighteenDigitNumberLongLong = [eighteenDigitNumberString longLongValue];  
Run Code Online (Sandbox Code Playgroud)

编辑:为了避免前导0,初始字符串已使用非零数字启动,并且循环仅运行17次.