// 功能:输入n,返回n*n的随机置换矩阵
vector<vector<bool>> randomMatrix(int n){
int i;
vector<int> v; // 创建一个n个元素的数组arr
for (i = 0; i < n; i++) {
v.push_back(i);
}
unsigned seed = std::chrono::system_clock::now ().time_since_epoch ().count ();
std::shuffle (v.begin (), v.end (), std::default_random_engine (seed));
vector<vector<bool>> matrix(n, vector<bool>(n, 0)); // 创建一个n*n的矩阵,并初始化为0
for(i = 0; i < n; i++){ // 将零矩阵赋值为置换矩阵
matrix[i][v[i]] = 1;
}
// cout<<endl;
// for (auto& it : v) {
// std::cout << it << " ";
// }
return matrix;
}
int main() {
int n,j,i;
cout << "Enter a positive integer: ";
cin >> n;
vector<vector<bool>> matrix1 = randomMatrix(n);
vector<vector<bool>> matrix2 = randomMatrix(n);
cout << "Generated array: "<<endl;
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
cout << matrix1[i][j] << " ";
}
cout << endl;
}
cout << "Generated array: "<<endl;
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
cout << matrix2[i][j] << " ";
}
cout << endl;
}
return 0;
}
为什么运行的时候会出现相同的情况啊,虽然这当然概率当然不为0,可是连续运行几次都是这样。
离谱的是,我将打印数组v的部分不给注释掉,生成的矩阵又总是不同的,这是什么原因啊