1

0、17、23、44、57、60、66、83、89、91、100 の整数の数値がありますが、その数値から 6 の数値をランダムにしたいのですが、どうすればよいですか? 0 から 100 までの 1 つの乱数のみを表示できますが、選択した数値から 6 つの数値を表示する方法がわかりません。教えてください。

4

4 に答える 4

2

配列から繰り返しなしで 6 つの数字を選びたい場合は、Knuth-Fisher–Yates shuffleを使用して配列をシャッフルし、最初の 6 つの数字を取得します。

int data[] = {0, 17, 23, 44, 57, 60, 66, 83, 89, 91, 100};
// Knuth-Fisher-Yates
for (int i = 10 ; i > 0 ; i--) {
    int n = rand() % (i+1);
    int tmp = data[i];
    data[i] = data[n];
    data[n] = tmp;
}

配列の最初の 6 つの要素にはdata、元の 11 要素の配列からのランダムな選択が含まれます。

于 2012-08-24T12:39:50.137 に答える
1

数値を配列に入れます。乱数ジェネレーターを使用して、配列の長さよりも 0 ~ 1 小さい乱数を取得し、そのインデックスの数値を取得します。

それはそれを行う1つの方法にすぎません。

于 2012-08-24T12:34:54.683 に答える
1

次のコードの乱数を配列にフェッチするには、次のコードが役立つ場合があります

[array objectAtIndex: (random() % [array count])]

これが例です

NSUInteger firstObject = 0;

for (int i = 0; i<[myNSMutableArray count];i++) {
    NSUInteger randomIndex = random() % [myNSMutableArray count];
    [myNSMutableArray exchangeObjectAtIndex:firstObject withObjectAtIndex:randomIndex];
    firstObject +=1;

}
于 2012-08-24T12:37:42.787 に答える
0

この投稿を参照してください: Objective-C で乱数を生成する

これを行う方法はたくさんあります。この特定のメソッドは、非常に優れた応答を示します。6 つの乱数を取得するには、関数を 6 回実行するだけです。

于 2012-08-24T12:36:17.953 に答える