我尝试了这个:
NSInteger numberFinal = 100000000000000000 + ((float)arc4random() / UINT32_MAX) * (999999999999999999 - 100000000000000000);
但它返回零...我不想指定范围,而只想要任何18位数字...
最佳答案
根据您的要求,正如@duDE所述,您不能使用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);
到了这里,无需解释所有简单的事情。
编辑:如果您确实想要一个长long值,可以这样做:
long long eighteenDigitNumberLongLong = [eighteenDigitNumberString longLongValue];
编辑:为了避免前导0,初始字符串已使用非零数字启动,并且循环仅运行17次。
关于ios - 生成任意正好为18位数字的随机NSInteger,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25567674/