作者nick982009 (DRAGON)
看板C_and_CPP
標題[問題] 有關rand()問題
時間Fri May 20 15:16:06 2016
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
code::blocks
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
問題(Question):
寫了一個class Matrix,主要是希望產生矩陣,矩陣內的elements是由亂數產生
目前遇到的問題是在主程式宣告兩個Matrix A,B,分別呼叫member function
可是兩個矩陣內的elements都一樣。
餵入的資料(Input):
預期的正確結果(Expected Output):
矩陣A和矩陣B內由亂數產生的elements應該要不同。
錯誤結果(Wrong Output):
矩陣A和矩陣B內的值一模一樣。
程式碼(Code):(請善用置底文網頁, 記得排版)
class Matrix
{
private:
int dim;
int **Array;
public:
void assignDimension(int n);
void assignElements();
void printMatrix();
};
void Matrix::assignDimension(int n)
{
dim = n;
}
void Matrix::assignElements()
{
srand(time(NULL));
Array = new int *[dim];
for(int row = 0;row < dim;row++)
Array[row] = new int [dim];
for(int i = 0;i < dim;i++)
{
for(int j = 0;j < dim;j++)
*(Array[i] + j) = rand() % 10 + 1;
}
}
void Matrix::printMatrix()
{
.......;
}
int main()
{
int n;
cout << "Enter n for n x n matrix: ";
cin >> n;
Matrix A, B;
A.assignDimension(n);
A.assignElements();
cout << "A = ";
A.printMatrix();
cout << endl;
B.assignDimension(n);
B.assignElements();
cout << "B = ";
B.printMatrix();
cout << endl;
return 0;
}
補充說明(Supplement):
初學C++,想了很久不知哪裡出問題><,麻煩板上大大,謝謝。
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 120.127.238.94
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1463728569.A.C89.html
※ 編輯: nick982009 (120.127.238.94), 05/20/2016 15:17:09
→ Schottky: 常見錯誤,srand() 放在 main 裡就好,不要 call 兩次 05/20 15:18
→ s89227: srand要放main裡,不是要用的時候才在函式裡call 05/20 16:51
→ refusekkk: 挺有趣的 竟然是在寫class的時候碰上 應該是原po本來 05/20 17:15
→ refusekkk: 有些非c語言的基礎跳來直接學進階的用法 05/20 17:15
推 Leadgen: srand()種子給一次就好了,你這樣其實是用到同一個種子。 05/20 17:26
→ nick982009: 感謝樓上解答!!大學學C,程式經驗很少,努力複習中QQ 05/20 22:55