Objective-C生成一个随机点,它位于给定的cgrect中

时间:2013-11-01 05:29:04

标签: ios cocoa-touch random cgrect

我的要求是在给定区域中生成一个随机点,即我有一些空间的Cg矩形,我需要在这个矩形中生成一个随机点..

我该如何处理这种情况?

5 个答案:

答案 0 :(得分:9)

- (CGPoint)randomPointInRect:(CGRect)r
{
    CGPoint p = r.origin;

    p.x += arc4random_uniform((u_int32_t) CGRectGetWidth(r));
    p.y += arc4random_uniform((u_int32_t) CGRectGetHeight(r));

    return p;
}

答案 1 :(得分:5)

原始问题专门针对Objective-C提出要求,但Swift解决方案可能对某人有所帮助。

extension CGRect {
    func randomPointInRect() -> CGPoint {
        let origin = self.origin
        return CGPointMake(CGFloat(arc4random_uniform(UInt32(self.width))) + origin.x, CGFloat(arc4random_uniform(UInt32(self.height))) + origin.y)
    }
}

答案 2 :(得分:0)

首先,查看此帖子以生成随机数:Generating random numbers in Objective-C

然后使用CGPointMake(x,y)使用随机数创建您的点:

int x = RandomNumberGenerator1Output;
int y = RandomNumberGenerator2Output;

CGPoint myPoint = CGpointMake(x, y);

答案 3 :(得分:0)

与任何随机数生成器相同。 你需要两个随机数,x和y。 只需在0和rect.size.width之间生成x,在0和rect.size.height之间生成y

分别添加rect.origin.x或rect.origin.y。 随机数生成在其他地方很好地涵盖。 寻找arc4random函数族。

答案 4 :(得分:0)

要在矩形中生成随机点,需要在矩形的“开始”和“结束”坐标之间生成随机X和Y.

如果RECT是你的矩形,那么 -

X = Random (RECT-Origion-X,RECT-Size-Width)
Y = Random (RECT-Origion-y,RECT-Size-Height)

如果你想知道如何在两个数字之间生成一个随机数,那么你可以去这里 - Generate Random Numbers Between Two Numbers in Objective-C