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

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

我怎么能在这种情况下继续?

- (CGPoint)randomPointInRect:(CGRect)r { CGPoint p = r.origin; px += arc4random_uniform((u_int32_t) CGRectGetWidth(r)); py += arc4random_uniform((u_int32_t) CGRectGetHeight(r)); return p; } 

原来的问题特别要求Objective-C,但Swift解决scheme可能会帮助某人。

 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) } } 

首先,查看这个post来生成随机数字: 在Objective-C中生成随机数字

然后使用CGPointMake(x,y)使用随机数来创build你的点:

 int x = RandomNumberGenerator1Output; int y = RandomNumberGenerator2Output; CGPoint myPoint = CGpointMake(x, y); 

跟任何随机数发生器一样。 你需要两个随机数,x和y。 只需在0和rect.size.width之间生成x,并在0和rect.size.height之间生成y

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

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

如果RECT是你的矩形然后 –

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

如果你想知道如何在两个数字之间生成一个随机数,那么你可以去这里 – 在Objective-C中的两个数字之间生成随机数