关于C#:CGPointMake(random(),random())无效

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()。