2

現在、私が提供する 2 つの数値の間でランダムな浮動小数点数を取得しようとする方法がありますが、正しく機能しません。

たとえば、下限の浮動小数点として 4.0 を入力し、上限の浮動小数点として 4.5 を入力すると、0.8 または 1.2 のような結果が得られ、これら 2 つの数値の間にあることもあります。ですから、この方法はダメだと思います。メソッドは次のとおりです。

- (float)randomFloatBetween:(float)num1 andLargerFloat:(float)num2 {
    return ((float)arc4random() / ARC4RANDOM_MAX) * num2-num1 + num1;
}

これは ARC4RANDOM_MAX です

#define ARC4RANDOM_MAX 0x100000000

とにかく、何が原因で、どうすれば修正できますか?

ありがとう!

4

1 に答える 1

7

あなたのコードはこれを意味します:

return (((float)arc4random() / ARC4RANDOM_MAX) * num2) - num1 + num1;

かっこが必要ですnum2-num1:

return ((float)arc4random() / ARC4RANDOM_MAX) * (num2-num1) + num1;
于 2012-07-16T21:30:22.440 に答える