CGPointMake(random(), random()) not working
本问题已经有最佳答案,请猛点这里访问。
Possible Duplicate:
Generating Random Numbers in Objective-C
号
嗨,我正在创建一个应用程序,当你按下一个丘疹,它会在视图中随机移动到一个地方。这个疙瘩是uiImageView。这是我输入的代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { UITouch *myTouch = [touches anyObject]; CGPoint point = [myTouch locationInView:pimple]; if ( CGRectContainsPoint(pimple.bounds, point) ) { [self checkcollision]; } } -(void)checkcollision { pimple.center = CGPointMake(random(), random()); sad.hidden = NO; NSURL* popURL = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"pop" ofType:@"mp3"]]; AudioServicesCreateSystemSoundID((CFURLRef) popURL, &popID); AudioServicesPlaySystemSound(popID); } |
此代码:pimple.center=cgpointmake(random(),random());不起作用。当我按下这个小疙瘩时,这个小疙瘩就会消失。因为我没有说任何。隐藏为丘疹,它一定意味着它正在移动。但是你看不到它,(它在视图外)我的代码有什么问题吗?我错过什么了吗?请帮忙。
afaik random()与c中的rand()相同,其中
Returns a pseudo-random integral number in the range 0 to RAND_MAX. [...] RAND_MAX is a constant defined in cstdlib. Its default value may vary between implementations but it is granted to be at least 32767.
号
结果,你把我们的丘疹移动到一个比你的窗户大得多的直肠内的随机位置。试试这个:(我假设自我是一个uiview)
1 2 3 | pimple.center = CGPointMake( random() % (unsigned int)self.bounds.size.width, random() % (unsigned int)self.bounds.size.height); |
%运算符是模运算符。
似乎你不会给你的伪随机发生器种子,它在每次启动时都保持相同的轨迹。StackOverflow上还有一个线程告诉我们使用arc4random而不是random()/rand()。