Nếu bạn tự giới hạn mình trong LCG PRNG chu kỳ đầy đủ thì câu trả lời rất dễ, theo định nghĩa, nó chỉ đơn giản là m . m
Để tìm thời gian của LCG PRNG không chu kỳ đầy đủ cho một hạt giống nhất định, bạn chỉ cần đếm số lần lặp của PRNG cho đến khi nó tạo ra giá trị hạt giống một lần nữa.
Từ trang wikipedia được tham chiếu :
Chiều dài thời gian
Thời gian của một LCG chung là nhiều nhất là m , và đối với một số lựa chọn ít hơn thế nhiều. Với điều kiện c là khác không, LCG sẽ có một khoảng thời gian đầy đủ cho tất cả các giá trị hạt giống khi và chỉ khi :
Trong khi LCG có khả năng tạo ra số giả ngẫu nhiên , điều này cực kỳ nhạy cảm với sự lựa chọn của các tham số c , m và một .
Trong lịch sử, các lựa chọn kém đã dẫn đến việc triển khai LCG không hiệu quả. Một ví dụ đặc biệt minh họa cho điều này là RANDU được sử dụng rộng rãi vào đầu những năm 1970 và dẫn đến nhiều kết quả hiện đang bị nghi ngờ vì việc sử dụng LCG kém này.
Tại sao bạn muốn sử dụng một trình tạo chu kỳ đầy đủ
Nếu bạn không giới hạn bản thân với các PRNG LCG đầy đủ thì bạn đang gặp rủi ro rất lớn .
Nếu bạn không biết rằng LCG đã cho là chu kỳ đầy đủ thì bạn có thể kết thúc với một trình tạo với số lượng các chuỗi khác nhau tùy ý, một số trong đó có thể nhỏ một cách đáng xấu hổ và có sự ngẫu nhiên kinh khủng, thậm chí còn tệ hơn cả trình tạo RANDU khét tiếng .
Bạn thực sự không muốn phải kiểm tra mọi giá trị hạt giống có thể để đảm bảo rằng nó tạo ra một chuỗi đủ dài cho ứng dụng của bạn.
đọc thêm
Đối với một mồi tuyệt vời về trình tạo số ngẫu nhiên giả, tôi thực sự khuyên bạn nên đọc chương Công thức số về số ngẫu nhiên.