[问题] 有关rand()问题

楼主: nick982009 (dragon)   2016-05-20 15:16:06
开发平台(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++,想了很久不知哪里出问题><,麻烦板上大大,谢谢。
作者: Schottky (顺风相送)   2016-05-20 15:18:00
常见错误,srand() 放在 main 里就好,不要 call 两次
作者: s89227 (Kei)   2016-05-20 16:51:00
srand要放main里,不是要用的时候才在函式里call
作者: refusekkk (另类3k)   2016-05-20 17:15:00
挺有趣的 竟然是在写class的时候碰上 应该是原po本来有些非c语言的基础跳来直接学进阶的用法
作者: Leadgen (新竹~)   2016-05-20 17:26:00
srand()种子给一次就好了,你这样其实是用到同一个种子。
楼主: nick982009 (dragon)   2016-05-20 22:55:00
感谢楼上解答!!大学学C,程式经验很少,努力复习中QQ

Links booklink

Contact Us: admin [ a t ] ucptt.com