2016-11-28 6 views
-4

配列に手動で数値を入力する代わりに、配列内でこれらの10個の数値をランダムにどのように生成できますか?彼らはこれらの10個の数字である必要があり、任意の場所にすることができrand()を使用して配列内の数値を生成する方法

int array[length] = { 1000, 2000,3000,4000,5000,6000,7000, 8000, 9000, 10000}; 
+0

使用[ 'のstd :: random_shuffle()'](http://en.cppreference.com/w/cpp/algorithm/random_shuffle) –

+0

まさに私を行う方法それを使う? – TheOptimist

+0

私の答えをご覧ください。 –

答えて

1

あなたがランダムに(reference documentation sampleから適応)あなたの配列内の数字の位置をpermutateするstd::shuffleを使用することができます。

const size_t length = 10; 
int array[length] = { 1000, 2000,3000,4000,5000,6000,7000, 8000, 9000, 10000}; 

std::random_device rd; 
std::mt19937 g(rd()); 

std::shuffle(std::begin(array), std::end(array), g); 

shuffle()呼び出し後、値はarrayのランダムな位置に表示されます。

+0

@ user4581301 _petit mal absence_(多分コーヒーが不足しているかもしれません)、私はそれを最後に終えました(1時間後; -P) –

+0

mt19937 g(rd())とは何ですか; – TheOptimist

+0

[標準乱数生成エンジン](http://en.cppreference.com/w/cpp/numeric/random/mersenne_twister_engine)。 –

0

ライブラリ以外のアルゴリズムを使用する場合は、ランダムに決定された位置にある別の要素で配列の各要素を切り替えることができます。コードでは、それは次のようになります。

int array[length] = {1000, 2000, 3000, 4000, 5000, 6000, 7000, 8000, 9000, 10000}; 
srand(time(NULL)); 
int randompos, temp; 
for (int i = 0; i < length; i++) { 
    randompos = rand % 10; 
    temp = array[i]; 
    array[i] = array[randompos]; 
    array[randompos] = temp; 
    //here, you could have a cout << array[randompos] << " "; to test 
} 
関連する問題