开发者

Objective-C Random Numbers

I'm making a si开发者_开发技巧mple pong game. To make the ball move at the beginning of a new round, I am using

ballVelocity = CGPointMake(4 - arc4random() % 8,4 - arc4random() % 8);

However, the important part is just this:

4 - arc4random() % 8

However, there are a few problems with this: first and foremost, it doesn't really generate a random number. Only after I quit the simulator, then reopen it are new numbers generated. Secondly, I only want it to generate numbers between -4 and -2 or 2 and 4.


arc4random() is the preferred random function on the iphone, instead of rand(). arc4random() does not need seeding.

This code will generate the ranges you're interested in:

int minus2_to_minus4 = (arc4random() % 3) - 4;
int two_to_four = (arc4random() % 3) + 2;


You need to look at the rand() function. Basically, you "seed" it with a start value, and it returns a new random number every time you call it.

Or look at this question which has a full example using arc4random.


This will give you a floating point number between -4 and -2 OR 2 and 4

float low_bound = -4; //OR 2      
float high_bound = -2;//OR 4
float rndValue = (((float)arc4random()/0x100000000)*(high_bound-low_bound)+low_bound);

If you want a number in -4…-2 AND 2…4 try this:

float low_bound = 2;      
float high_bound = 4;
float rndValueTemp = (((float)arc4random()/0x100000000)*(high_bound-low_bound)+low_bound);
float rndValue = ((float)arc4random()/0x100000000)<0.5?-rndValueTemp:rndValueTemp;
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜