Tôi làm việc trong C và tôi đang cố gắng tạo một bộ tạo ngẫu nhiên không chỉ tạo ra một số khác mỗi khi tôi chạy trình tạo nhưng cũng có một trình tự khác mỗi lần tôi chạy chương trình.Tôi đã kiểm tra hầu hết mọi thứ tôi tìm thấy trực tuyến. Tôi đã tạo ra 2 cách tốt để tạo ra một trình tạo ngẫu nhiên tốt. Đầu tiên là sử dụng một hạt giống khác nhau mỗi lần. Nhưng điều này có nghĩa rằng tôi phải sử dụng một hạt giống ngẫu nhiên khác nhau mỗi lần, một vấn đề mà tôi đã không giải quyết lúc đầu. Đây là những gì tôi đang cố gắng nhưng nó không thực sự ngẫu nhiên như tôi muốn:cố gắng tìm một trình tạo số ngẫu nhiên
int myrand(int random_seed){
random_seed = random_seed * 1103515245 +12345;
return (unsigned int)(random_seed/65536) % 32768;
}
Mỗi lần tôi gọi hàm i tăng hạt bằng cách 1.
cách thứ hai là sử dụng thay đổi time.Time và đây là randomness.I cũng đã cố gắng rất nhiều cách để thực hiện điều này. Thử mới nhất của tôi là ở đây: Compiler error-Possible IDE error"undefined reference to gettimeofday error" nhưng tôi không thể sử dụng chức năng gettimeofday vì tôi làm việc trong Windows.Cũng trong câu hỏi đó tôi không nhận được bất kỳ câu trả lời nào.
Bất cứ ai có thể giúp tôi làm thế nào tôi có thể thực hiện một máy phát điện ngẫu nhiên (có thể sử dụng thời gian) trong C làm việc trong Windows? Hoặc tôi nên sử dụng Unix?
là một cái gì đó sai trái với 'srand()'? Bạn có thể gieo hạt giống như thế này: 'srand (time (NULL));' –
tôi cũng đã thử srand (time (NULL)) nhưng tôi phải trì hoãn để chờ thời gian thay đổi. Lý do là tôi muốn tạo ra một số lượng lớn các số ngẫu nhiên trong một lần và tôi không muốn chờ 2 phút cho chương trình để tạo them.I cũng đã cố gắng sử dụng mili giây nhưng không thành công.Maybe mili giây là câu trả lời nhưng tôi không thể thực hiện nó đúng, một lần nữa vấn đề là tôi đang sử dụng windows. – Dchris
@Dchris: hạt giống trình tạo số giả ngẫu nhiên (PRNG) của bạn với thời gian * một lần *, khi bắt đầu chương trình. Sau đó, bạn có thể phải đảm bảo không chạy chương trình của bạn nhiều hơn một lần mỗi giây (và giới thiệu mili giây sẽ giúp bạn), nhưng bạn không phải chờ một giây cho mỗi lần bạn đọc một số từ PRNG của bạn. –