Chương trình của tôi chứa mã phải tạo số nguyên dương ngẫu nhiên mỗi khi tôi thực thi nó. Nó tạo ra các số ngẫu nhiên nhưng chỉ một lần. Sau đó, khi tôi thực thi cùng một mã, nó mang lại cho tôi các giá trị giống nhau, và nó làm cho mã của tôi vô dụng.Làm thế nào để sử dụng hàm srand() với time.h?
tôi bắt đầu với rand chức năng, và sau đó tôi đã sử dụng srand() chức năng với các tập tin tiêu đề time.h, nhưng nó vẫn không hoạt động đúng.
#define size 10
for(i=0;i<size;i++)
Arr[i] = rand()%size;
cuộc gọi đầu tiên (ngẫu nhiên):
6 0 2 0 6 7 5 5 8 6
cuộc gọi thứ hai (ngẫu nhiên nhưng giống như trước):
6 0 2 0 6 7 5 5 8 6
Sau đó tôi đến thăm hỏi Stack Overflow và tôi đọc về hàm srand() và tôi đã sử dụng nó như sau:
#include<time.h>
for(i=0;i<size;i++)
Arr[i] = srand(time(NULL));
Đầu tiên gọi:
-10327 -10327 -10327 -10327 -10327 -10327 -10327 -10327 -10327 -10327
Second gọi:
-10326 -10326 -10326 -10326 -10326 -10326 -10326 -10326 -10326 -10326
Nó được đem lại cho tôi (các giá trị ngẫu nhiên nhưng không phải) khác nhau. Tôi đã xác định Arr [i] dưới dạng unsigned int và vẫn nhận được giá trị âm.
bạn đã đặt hạt giống chưa? Đặt hạt giống của bạn với hàm thời gian. – Magn3s1um
Bạn chỉ cần gọi 'srand' một lần để tạo hạt giống cho trình tạo' rand'. Đừng gọi 'srand' mỗi lần để lấy số của bạn – TJD
Bạn có lẽ nên đọc [manpage] (http://linux.die.net/man/3/rand), giải thích cách các hàm này hoạt động và cung cấp một ví dụ làm việc. – Aya