1

0 から 7 までの 8 つのランダムな値を生成し、それらを という名前の配列に格納する簡単なスクリプトを作成していますrandom_numbers

これは私の試みです:

int main(int argc, char** argv) {

    int random_numbers[8];
    srand((unsigned)time(NULL));
    for (int i = 0; i < 8; i++) {
        random_numbers[i] = 1+ rand() % 8;
        cout << random_numbers[i] << endl;
    }
    return 0;
}

これにより、繰り返し値が得られます。random_numbers0 から 7 までのランダムな値を入力したいのですが、数字の繰り返しはありません。

どうやってやるの?

4

4 に答える 4

1

何らかの方法で C++ を使用しているため、コードをもう少し変更しました。配列の代わりにベクトルを使用すると、作業が楽になります。これにより、重複することなくランダムな順序で 0 ~ 7 が生成されます。

でコンパイル-std=c++0x

#include <iostream>
#include <algorithm>
#include <vector>
#include <numeric>

using namespace std;

int main(int argc, char** argv) {

    srand(time(NULL));
    vector<int> random_numbers(8);
    iota(random_numbers.begin(), random_numbers.end(), 1);

    random_shuffle(random_numbers.begin(), random_numbers.end());
    for (unsigned i = 0; i < random_numbers.size(); i++) {
        cout << random_numbers[i] << endl;
    }
    return 0;
}
于 2013-05-30T10:42:34.343 に答える