1

arc4random()特定の範囲の数値を生成するために使用しています。ただし、断続的に負の数を受け取ります。私は奇妙なことは何もしていません:

if([aBug x] == -1) {
    x = arc4random() % columns;
}

if([aBug y] == -1) {
    y = arc4random() % rows;
}

ここでxy時には負の値に設定されます。xyは両方ともタイプintです。

4

3 に答える 3

4

u_int32_txとyを。ではなくタイプとして宣言したいようですint。つまり、符号付きではなく符号なし変数を使用する必要があります。

または、32ビットより大きい符号付き整数を使用します(例:uint64_t/ long long)。

于 2012-08-26T19:42:07.570 に答える
4

arc4random()は常に正なので:

arc4random()関数は、0から(2 ** 32)-1の範囲の疑似乱数を返します。

[ソース]

私はそれを推測する必要があるcolumnsrows、「任意に」否定的です。正の数を負の数で変更すると、負の数が返されます。

行と列のデータ型は何ですか?

于 2012-08-26T19:24:28.220 に答える
2

私も同じ問題を抱えていました。なぜこれで修正されたのかわかりませんが、

(int)arc4Random()%4

(int)(arc4Random()%4)

私のために働いているようでした。

于 2012-09-16T10:16:49.313 に答える