c++のプログラムで質問です。Rand()関数で5×5の2次元配列を1〜100までの数字で行いたいんですけどどのようにすれば良いでしょうか?

補足

緊急なので明後日までお願いします

C言語関連 | プログラミング71閲覧xmlns="http://www.w3.org/2000/svg">100

ベストアンサー

0

その他の回答(3件)

0

C++の場合は <stdlib.h>(<cstdlib>)のrand関数は使えません。 <random>ヘッダを常に使うべきです。

0

C++ らしく書くとこんな感じかな。 #include <algorithm> #include <random> int data[5][5]; std::mt19937 mt{ std::random_device{}() }; std::uniform_int_distribution<int> dist(1, 100); std::for_each(&data[0][0], &data[4][4] + 1, [&](int& x) { x = dist(mt); });

0

重複なし #include <iostream> #include <random> #include <ctime> using namespace std; int main(void){     int data[5][5];     int tmp[100];     int i, j, k, w;     for(i = 0; i < 100; i++){         tmp[i] = i + 1;     }     srand(time(NULL));     for(i = 0; i < 10000; i++){         j = rand() % 100;         k = rand() % 100;         w = tmp[j];         tmp[j] = tmp[k];         tmp[k] = w;     }     for(i = 0; i < 5; i++){         for(j = 0; j < 5; j++){             data[i][j] = tmp[i * 5 + j];         }     }     for(i = 0; i < 5; i++){         for(j = 0; j < 5; j++){             cout << data[i][j] << " ";         }         cout << endl;     }     return 0; }