Mã nàyChức năng srand trong C++
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
printf ("First number: %d\n", rand() % 100);
srand (time(NULL));
printf ("Random number: %d\n", rand() % 100);
srand (1);
printf ("Again the first number: %d\n", rand() %100);
return 0;
}
có đầu ra sau đây:
First number: 41
Random number: 13
Again the first number: 41
Ngoài ra còn có các nguyên tắc sau:
Hai khởi tạo khác nhau với các hạt giống, chỉ thị trình tạo giả ngẫu nhiên để tạo ra cùng một loạt các kết quả cho các cuộc gọi tiếp theo tới rand trong cả hai trường hợp.
Tôi hiểu các từ nhưng tôi không hiểu chính phương thức đó. Tại sao nó lại trả lại 41? Có phải ngẫu nhiên hay phải trả về cùng một kết quả trong mọi trường hợp theo mã này?
Điều này giúp gỡ lỗi dễ dàng hơn. Nếu bạn đang chạy bình thường sử dụng srant (thời gian (NULL)). Nếu có một lỗi trong chương trình của bạn không gọi srand() hoặc gọi srand (1) và bạn sẽ nhận được cùng một chuỗi các số từ các cuộc gọi đến rand(). Lưu ý mỗi cuộc gọi đến rand sẽ tạo ra số tiếp theo trong chuỗi nhưng chuỗi sẽ luôn giống nhau. Lưu ý 2: Bạn chỉ nên gọi srand() một lần trong ứng dụng. –
@Martin York: Rất đẹp. Không bao giờ nghĩ về điều này từ điểm gỡ lỗi. Có ý nghĩa. – Lazer