3

-60 から 60 までの arc4random を使用して乱数を取得しようとしています。1 から 120 までの avnumber を生成し、60 を減算します。

これが 1 行にある場合、数値が負になるたびに奇妙な結果が得られます。

//Loop illustrates point better.
while (1) {
    //Gets garbage numbers approximately half the time (when random1 should be negative)
    NSInteger random1 = 1 + (arc4random() %120) - 60;
    NSLog (@"random1: %li", random1);

    //Essentially same thing, but works fine.
    NSInteger random2 = 1 + (arc4random() %120);
    NSInteger random3 = random2 - 60;
    NSLog (@"random2: %li random3: %li", random2, random3);
}

なぜこれが起こるのですか?

4

3 に答える 3