3

私は簡単な卓球ゲームを作っています。新しいラウンドの開始時にボールを動かすために、私は使用しています

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

ただし、重要な部分は次のとおりです。

4 - arc4random() % 8

ただし、これにはいくつかの問題があります。何よりもまず、実際には乱数を生成しません。シミュレーターを終了してから再度開くと、新しい数値が生成されます。次に、-4 と -2 または 2 と 4 の間の数値のみを生成するようにします。

4

3 に答える 3

9

arc4random() は、rand() の代わりに iPhone で推奨されるランダム関数です。arc4random() はシードを必要としません。

このコードは、関心のある範囲を生成します。

int minus2_to_minus4 = (arc4random() % 3) - 4;
int two_to_four = (arc4random() % 3) + 2;
于 2011-02-14T06:19:19.773 に答える
3

関数を見る必要がありrand()ます。基本的に、開始値で「シード」し、呼び出すたびに新しい乱数を返します。

または、arc4random を使用した完全な例があるこの質問を見てください。

于 2011-02-14T03:36:03.427 に答える
0

これにより、-4 と -2 または 2 と 4 の間の浮動小数点数が得られます。

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

-4…-2 AND 2…4 の数値が必要な場合は、これを試してください。

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;
于 2012-03-04T00:28:45.083 に答える