Thắc mắc về hàm rand() trong c++

Chào mọi người, em đang viết chương trình tạo ngẫu nhiên 2 số nguyên lớn. Chạy chương trình thì lúc nào 2 số ngẫu nhiên này đều bằng nhau hết. Cho em hỏi tại sao kq lại như vậy và có cách nào khắc phục được không?
Em rất cảm ơn

void create_number(Number& a) {
    srand(time(NULL));
    int x, n = rand()%1001+1;
    for (int i=0; i<n-1; ++i)
    {
        x = rand()%10;
        a.push_back(x);
    }
    x = rand()%9+1;
    a.push_back(x);
}

void print_number(const Number& a) {
    int n=a.size();
    for (int i=n-1; i>=0; --i) printf("%d", a[i]);
    cout << endl;
}

int main() {
    Number a, b;
    create_number(a);
    create_number(b);
    print_number(a);
    print_number(b);

    return 0;
}

Thử để srand(time(NULL)); trong main() thay vì trong create_number() thử xem.

2 Likes

Dạ vâng, em hiểu rồi ạ. Em cảm ơn rất nhiều :>

:> Vâng ạ, em để trong main() thì chạy ra 2 số khác nhau rồi. Em cảm ơn nhiều lắm ạ.

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?