一个奇怪的随机数案例.. arcRandom()

时间:2014-02-12 09:29:48

标签: ios iphone epoch arc4random

我在一个应用程序中遇到了一个错误,我正在审核该错误

unsigned int i = [[[NSString stringWithFormat:@"%u",(unsigned int) arc4random()]substringToIndex:2] integerValue]*[[NSDate date] timeIntervalSince1970];

使用纪元时间和arc4random()的这一行代码在模拟器上给出随机数,但在设备上每次都返回一个常量值4294967295。

虽然这个bug本身很容易解决但是这个关于设备和模拟器差异的谜团对我来说是无法解决的,我认为它与i386和armv有关。

任何解释都会有所帮助。

1 个答案:

答案 0 :(得分:0)

NSInteger int1 = [[[NSString stringWithFormat:@"%u",(unsigned int) arc4random()]substringToIndex:2] integerValue] ;
NSTimeInterval t = [[NSDate date] timeIntervalSince1970] ;
double dd = t * int1 ;
NSLog(@"%f", dd) ;

unsigned int不足以放置整数* double的结果值。