Hãy chương trình sau đây:rand thay đổi giá trị mà không thay đổi hạt giống
#include <cstdlib>
using std::rand;
#include <iostream>
using std::cout;
int main()
{
cout << rand() << ' ' << rand() << ' ' << rand() << '\n';
}
Do rand
sản xuất cùng các giá trị càng lâu càng hạt giống là không thay đổi sử dụng srand
, điều này sẽ tạo ra ba số giống hệt nhau.
ví dụ:
567 567 567
Tuy nhiên, khi tôi chạy chương trình này, nó cung cấp cho tôi ba giá trị khác nhau.
ví dụ:
6334 18467 41
Khi chương trình được (biên dịch và) chạy lại, cùng ba số được tạo. Tôi có nên sử dụng srand
để thay đổi hạt giống trước khi tôi bắt đầu nhận được các kết quả khác nhau từ rand
không? Đây có phải là trình biên dịch/triển khai của tôi đang cố gắng giúp tôi không?
Hệ điều hành: Windows XP
Compiler: GCC 4.6.2
Libraries: MinGW
EDIT: Bằng cách cố gắng sử dụng srand
, tôi phát hiện ra rằng đây là kết quả từ một hạt giống trong tổng số 1 (mà tôi đoán được tạo mặc định).
+1 cho chương trình mẫu ngắn, hoàn chỉnh. 1 để hiển thị những gì chương trình tạo ra. 1 để hiển thị những gì bạn mong đợi nó để sản xuất. –
Bạn đang đề xuất rằng trình tạo số ngẫu nhiên sẽ cần phải được tạo hạt trước mỗi cuộc gọi đến rand? Điều đó nghe có vẻ giống với số người dùng được tạo hơn số được tạo ngẫu nhiên. –
Nếu tất cả các lần xuất hiện của 'rand' trong một hàm cho cùng một kết quả, nó sẽ không hữu ích chút nào. – hjpotter92