Tôi đang thực hiện một bài tập sách để viết một chương trình tạo ra số psuedorandom. Tôi bắt đầu đơn giản với.Cách nào để sử dụng hàm rand() trong C++?
#include "std_lib_facilities.h"
int randint()
{
int random = 0;
random = rand();
return random;
}
int main()
{
char input = 0;
cout << "Press any character and enter to generate a random number." << endl;
while (cin >> input)
cout << randint() << endl;
keep_window_open();
}
Tôi nhận thấy rằng mỗi khi chương trình được chạy, sẽ có cùng một đầu ra "ngẫu nhiên". Vì vậy, tôi đã xem xét các trình tạo số ngẫu nhiên và quyết định thử hạt giống bằng cách bao gồm lần đầu tiên này trong randint().
srand(5355);
Mà chỉ cần tạo ra cùng số lặp đi lặp (Tôi cảm thấy ngu ngốc bây giờ cho việc thực hiện nó.)
Vì vậy, tôi nghĩ rằng tôi muốn được thông minh và thực hiện các hạt giống như thế này.
srand(rand());
này về cơ bản chỉ làm giống như các chương trình đã làm ở nơi đầu tiên nhưng outputted một bộ khác nhau của con số (có ý nghĩa kể từ khi số đầu tiên được tạo ra bởi rand() luôn luôn là 41.)
điều duy nhất tôi có thể nghĩ ra để làm điều này ngẫu nhiên hơn là:
- có người dùng nhập vào một số và thiết lập đó là hạt giống (đó sẽ là dễ thực hiện, nhưng đây là một phương sách cuối cùng) HOẶC
- Bằng cách nào đó hạt giống được đặt vào đồng hồ máy tính hoặc một số số thay đổi liên tục khác.
Tôi có thể vượt qua đầu và tôi có nên dừng lại ngay bây giờ không? Tùy chọn 2 có khó thực hiện không? Bất kỳ ý tưởng nào khác?
Xin cảm ơn trước.
+1, đây là thực hành tiêu chuẩn. – SingleNegationElimination
Bạn cũng có thể đọc/dev/ngẫu nhiên nếu bạn đang ở trong môi trường * nix; nhưng tôi đồng ý với Token, đây là một thực hành tiêu chuẩn để thiết lập srand với hàm thời gian. – Suroot
Ngoài ra, hãy gọi srand() ở chính gần đầu kể từ khi bạn chỉ nên gọi nó một lần. Đừng gọi nó mỗi khi bạn tạo một số mới. – MahlerFive